شريط القوائم احد اوضح الأجزاء فى واجهة التطبيق، هو مجموعة من الأوامر المرتبطة موجودة فى قوائم. فى تطبيق الكونسول كنت تحتاج لتذكر كل هذه الأوامر، ولكن هنا نجدها مجمعة فى اماكن منطقية
فى المثال الأول، شريط قوائم بسيط
simplemenu.cs using System; using System.Drawing; using System.Windows.Forms; class MForm : Form { public MForm() { Text = "Simple menu"; MenuStrip ms = new MenuStrip(); ms.Parent = this; ToolStripMenuItem file = new ToolStripMenuItem("&File"); ToolStripMenuItem exit = new ToolStripMenuItem("&Exit", null, new EventHandler(OnExit)); exit.ShortcutKeys = Keys.Control | Keys.X; file.DropDownItems.Add(exit); ms.Items.Add(file); MainMenuStrip = ms; Size = new Size(250, 200); CenterToScreen(); } void OnExit(object sender, EventArgs e) { Close(); } } class MApplication { public static void Main() { Application.Run(new MForm()); } }
فى المثال لدينا شريط قوائم به قائمة واحدة بها عنصر واحد وعند الضغط عليه يتم اغلاق النافذة، لاحظ الطرق المستخدمة لغلق التطبيق كإستخدام الإختصار Ctrl + X او Alt+F4
MenuStrip ms = new MenuStrip();MenuStrip يقوم بإنشاء نظام القوائم للنافذة، وتشمل عناصر من ToolStripMenuItem (تستطيع استخدامها بأنها امر مباشر او كحاوية لقوائم اخرى ..)
ToolStripMenuItem file = new ToolStripMenuItem("&File"); ننشئ القائمة
ToolStripMenuItem exit = new ToolStripMenuItem("&Exit", null, new EventHandler(OnExit));
ننشئ عنصر اخر ونربط تفعيله بمعالج الحدث OnExit
exit.ShortcutKeys = Keys.Control | Keys.X;نحدد مفاتيح الإختصار بإستخدام الخاصية ShortcutKeys
file.DropDownItems.Add(exit);نقم بإضافة العنصر exit الى القائمة file
ms.Items.Add(file); نضيف القائمة file الى شريط القوائم
MainMenuStrip = ms;. نحدد شريط القوائم الرئيسى للشريط الخاص بنا
Figure: Simple menu
كل عنصر ممكن ان يشمل قائمة فرعية بداخله، بهذه الطريقة نستطيع تجميع الأوامر المترابطة فى مجموعات، على سبيل المثال نضع الأوامر الخاصة بعرض واخفاء اشرطة الأدوات ك "شريط شخصى، شريط عنوان، شريط الحالة، او شريط التصفح" فى قائمة فرعية بإسم toolbars
submenu.cs using System; using System.Drawing; using System.Windows.Forms; class MForm : Form { public MForm() { Text = "Submenu"; MenuStrip ms = new MenuStrip(); ms.Parent = this; ToolStripMenuItem file = new ToolStripMenuItem("&File"); ToolStripMenuItem exit = new ToolStripMenuItem("&Exit", null, new EventHandler(OnExit)); ToolStripMenuItem import = new ToolStripMenuItem(); import.Text = "Import"; file.DropDownItems.Add(import); ToolStripMenuItem temp = new ToolStripMenuItem(); temp.Text = "Import newsfeed list..."; import.DropDownItems.Add(temp); temp = new ToolStripMenuItem(); temp.Text = "Import bookmarks..."; import.DropDownItems.Add(temp); temp = new ToolStripMenuItem(); temp.Text = "Import mail..."; import.DropDownItems.Add(temp); file.DropDownItems.Add(exit); ms.Items.Add(file); MainMenuStrip = ms; Size = new Size(380, 200); CenterToScreen(); } void OnExit(object sender, EventArgs e) { Close(); } } class MApplication { public static void Main() { Application.Run(new MForm()); } }
فى المثال ننشئ قائمة فرعية لها 3 عناصر
ToolStripMenuItem import = new ToolStripMenuItem(); import.Text = "Import";
كما ذكرنا ان عنصر ToolStripMenuItem ممكن ان يستخدم لحوى قائمة فرعية
ToolStripMenuItem temp = new ToolStripMenuItem(); temp.Text = "Import newsfeed list..."; import.DropDownItems.Add(temp);
ننشئ عنصر اخر ونضيفه ل import
Figure: Submenu
فى المثال التالى سنعرض ال Check menu item
checkmenuitem.cs using System; using System.Drawing; using System.Windows.Forms; class MForm : Form { private StatusBar sb; private MenuItem viewStatusBar; public MForm() { Text = "Check menu item"; sb = new StatusBar(); sb.Parent = this; sb.Text = "Ready"; MainMenu mainMenu = new MainMenu(); MenuItem file = mainMenu.MenuItems.Add("&File"); file.MenuItems.Add(new MenuItem("Eξt", new EventHandler(OnExit), Shortcut.CtrlX)); MenuItem view = mainMenu.MenuItems.Add("&View"); viewStatusBar = new MenuItem("View StatusBar"); viewStatusBar.Checked = true; viewStatusBar.Click += new EventHandler(ToggleStatusBar); view.MenuItems.Add(viewStatusBar); Menu = mainMenu; Size = new Size(250, 200); CenterToScreen(); } void OnExit(object sender, EventArgs e) { Close(); } void ToggleStatusBar(object sender, EventArgs e) { bool check = viewStatusBar.Checked; if (check) { sb.Visible = false; viewStatusBar.Checked = false; } else { sb.Visible = true; viewStatusBar.Checked = true; } } } class MApplication { public static void Main() { Application.Run(new MForm()); } }
لدينا قائمتين File, View وتشمل القائمة View عنصرا يقوم بعكس حالة ظهور شريط الحالة
MainMenu mainMenu = new MainMenu();نستخدم الأداة MainMenu لإنشاء شريط القوائم (نستطيع استخدامها او MenuStrip ولكن الأخير لديه بعض الوظائف الإضافية)
viewStatusBar.Checked = true;نقوم بتنشيط ذلك العنصر افتراضيا
bool check = viewStatusBar.Checked; if (check) { sb.Visible = false; viewStatusBar.Checked = false; } else { sb.Visible = true; viewStatusBar.Checked = true; }
هنا نحددا ما إذا كان العنصر منشطا او لا وبناء عليه نحدد حالة شريط الحالة
Figure: Check menu item
سنقوم بتعزيز معرفتنا حول الأداة MenuStrip ، سننشئ عنصر مع صورة وكيف فصل العناصر بإستخدام separator “فاصل"
menustrip.cs using System; using System.Drawing; using System.Windows.Forms; class MForm : Form { public MForm() { Text = "MenuStrip"; Size = new Size(250, 200); MenuStrip menuStrip = new MenuStrip(); ToolStripMenuItem titem1 = new ToolStripMenuItem("File"); menuStrip.Items.Add(titem1); ToolStripMenuItem titem2 = new ToolStripMenuItem("Tools"); menuStrip.Items.Add(titem2); ToolStripMenuItem subm1 = new ToolStripMenuItem("New"); subm1.Image = Image.FromFile("new.png"); titem1.DropDownItems.Add(subm1); ToolStripMenuItem subm2 = new ToolStripMenuItem("Open"); subm2.Image = Image.FromFile("open.png"); titem1.DropDownItems.Add(subm2); titem1.DropDownItems.Add(new ToolStripSeparator()); ToolStripMenuItem subm3 = new ToolStripMenuItem("Exit"); subm3.Image = Image.FromFile("exit.png"); titem1.DropDownItems.Add(subm3); subm3.Click += OnExit; Controls.Add(menuStrip); MainMenuStrip = menuStrip; CenterToScreen(); } public static void Main() { Application.Run(new MForm()); } void OnExit(object sender, EventArgs e) { Close(); } }
لدينا قائمتين هما File, Tools ، فى القائمة File لدينا 3 عناصر بصور، ولدينا فاصل واحد.
ToolStripMenuItem subm1 = new ToolStripMenuItem("New"); subm1.Image = Image.FromFile("new.png"); titem1.DropDownItems.Add(subm1);
هنا ننشئ العنصر الأول ونستخدم الخاصية Image لتحديد الصورة الخاصة به -نحصل عليها بإستخدام الطريقة FromFile للصف Image)
titem1.DropDownItems.Add(new ToolStripSeparator());هنا نقوم بإضافة فاصل
Figure: Images and separator
تقوم القوائم بتجميع كل الأوامر ولكن يقوم شريط الأدوات بتوفير وصول سريع لأكثر الأوامر المستخدمه من شريط القوائم، شريط الأدوات مستخدم لعرض مجموعة من الأزرار -نستطيع ان نحدد لها صور بإستخدامنا ل ImageList- ثم نحدد الخاصية ImageList الخاصة بشريط الأدوات ثم نحدد رقم -ترتيب- الصورة المطلوبة للزر
toolbar.cs using System; using System.Drawing; using System.Windows.Forms; public class MForm : Form { private ImageList toolBarIcons; private ToolBarButton save; private ToolBarButton exit; private ToolBar toolBar; public MForm() { Size = new Size(250, 200); Text = "Simple toolbar"; toolBar = new ToolBar(); toolBar.Parent = this; toolBarIcons = new ImageList(); save = new ToolBarButton(); exit = new ToolBarButton(); save.ImageIndex = 0; save.Tag = "Save"; exit.ImageIndex = 1; exit.Tag = "Exit"; toolBar.ImageList = toolBarIcons; toolBar.ShowToolTips = true; toolBar.Buttons.AddRange(new ToolBarButton[] {save, exit}); toolBar.ButtonClick += new ToolBarButtonClickEventHandler(OnClicked); toolBarIcons.Images.Add(new Icon("new.ico")); toolBarIcons.Images.Add(new Icon("exit.ico")); CenterToScreen(); } static void Main() { Application.Run(new MForm()); } void OnClicked(object sender, ToolBarButtonClickEventArgs e) { if (e.Button.Tag.Equals("Exit")) Close(); } }
فى مثالنا لدينا زرين على شريط الأدوات
toolBar = new ToolBar();ننشئ شريط الأدوات من الصف ToolBar
toolBarIcons = new ImageList();ننشئ قائمة الصور
save = new ToolBarButton(); exit = new ToolBarButton();
ننشئ الأزرار الخاصة بشريط الأدوات
save.ImageIndex = 0;نحدد ترتيب الصورة الخاصة بالزر save
toolBar.Buttons.AddRange(new ToolBarButton[] {save, exit});نقوم بإضافة الزرين save, exit الى شريط الأدوات بإستخدام الطريقة AddRange من الخاصية Buttons
toolBarIcons.Images.Add(new Icon("new.ico")); toolBarIcons.Images.Add(new Icon("exit.ico"));
اضافة الصور الى قائمة الصور
if (e.Button.Tag.Equals("Exit")) Close();
نختبر اذا ماكان ال tag قيمته Exit فنغلق النافذة
Figure: ToolBar
This part of the Winforms tutorial was about menus and toolbars.
Home ‡ Contents ‡ Top of Page