SIGN UP MEMBER LOGIN:    
ARTICLE

Adding Menu Support to a Windows Form

Posted by Mahesh Chand Articles | Windows Forms C# December 18, 2000
This sample code shows you how to use the MainMenu and MenuItem classes to add a menu and click handler for a Windows Form.
Reader Level:
Download Files:
 

In one of my recent C# applications I had to use menus on a form and corresponding event handlers on the click of menu items.



The MainMenu class is used to create a main menu. MenuItem class can be used to add menu items. MenuItem class is used to add menu items to the main menu. Menu item constructor takes its event handler as an argument.

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace OpenFileDlg
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(80, 56);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(136, 32);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(56, 120);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(208, 20);
this.textBox1.TabIndex = 1;
this.textBox1.Text = "textBox1";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {this.textBox1,this.button1});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(
new Form1());
}
private void button1_Click(object sender, System.EventArgs e)
{
OpenFileDialog fdlg =
new OpenFileDialog();
fdlg.Title = "C# Corner Open File Dialog" ;
fdlg.InitialDirectory = @"c:\" ;
fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*" ;
fdlg.FilterIndex = 2 ;
fdlg.RestoreDirectory =
true ;
if(fdlg.ShowDialog() == DialogResult.OK)
{
textBox1.Text = fdlg.FileName ;
}
}
private void Form1_Load(object sender, System.EventArgs e)
{
// Adding a new menu to the form
MainMenu mainMenu = new MainMenu();
this.Menu = mainMenu;
ContextMenu label1ContextMenu =
new ContextMenu();
Label label1 =
new Label();
label1.ContextMenu = label1ContextMenu;
//Add Database Options Menu
MenuItem miFile = mainMenu.MenuItems.Add("&Database Options");
miFile.MenuItems.Add(
new MenuItem("&Open Database", new EventHandler this.FileOpen_Clicked), Shortcut.CtrlO));
miFile.MenuItems.Add("-");
// Gives us a seperator
miFile.MenuItems.Add(new MenuItem("&Create New Database", new EventHandler this.FileCreateDB_Clicked),
Shortcut.CtrlC));
miFile.MenuItems.Add("-");
miFile.MenuItems.Add(
new MenuItem("E&xit", new EventHandler this.FileExit_Clicked), Shortcut.CtrlX));
}

Here is
the code for event handlers:

//File->Open Database Menu item handler
private
void FileOpen_Clicked(object sender, System.EventArgs e)
{
openFileDialog fdlg =
new OpenFileDialog();
fdlg.Title = "C# Corner Open File Dialog" ;
fdlg.InitialDirectory = @"c:\" ;
fdlg.Filter = "All files (*.*)|*.*|Access Database(*.mdb) files (*.mdb)|*.mdb" ;
fdlg.FilterIndex = 2 ;
fdlg.RestoreDirectory =
true ;
if(fdlg.ShowDialog() == DialogResult.OK)
{
textBox1.Text = fdlg.FileName ;
}
}

//File->Create Database Menu item handler

private
void FileCreateDB_Clicked(object sender, System.EventArgs e)
{
MessageBox.Show("Create Database menu event");
}
//File->Exit Menu item handler
private
void FileExit_Clicked(object sender, System.EventArgs e)
{
this.Close();
}
}
}

References: MSDN

Login to add your contents and source code to this article
share this article :
post comment
 

You use DataAdapter.Update method to update the database. To see more details sample applications, go to ADO.NET section of this site. There are many samples.

Posted by Mahesh Chand Mar 24, 2007

Hi Sir! I really need a help of yours.Currently I am working on a project for inventory management system. For that I am using VB.net for coding and SQL as a backend database. I am trying to basicaly display all the records with the help of a DataGrid. I was successful after looking at your code but now I am getting stuck on how to update/delete existing records and inserting new records in the database with the help of datagrid. Please help me with this as your invalueable advice can make a big difference to my career. Thanks Naunihal Singh naunihal2@rediffmail.com

Posted by naunihal singh Mar 23, 2007
Nevron Gauge for SharePoint
Become a Sponsor
PREMIUM SPONSORS
  • Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
    ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications. Visit DynamicPDF here
Nevron Gauge for SharePoint
Become a Sponsor