PDA

View Full Version : contextmenustrip هنگام اجرا



mousa1992
شنبه 07 مرداد 1391, 23:07 عصر
سلام دوستان
contextmenustrip رو هنگام اجرا ایجاد میکنم تمام ایتم هاش رو به همون ترتیبی که میخوام اد میشه ولی separator ها اد نمیشه و همشون توی اخرین مکانی که separator رو قرار دادم میافتن!! مشکل کجاست؟ ممنون

mousa1992
شنبه 07 مرداد 1391, 23:27 عصر
//********* cms
separator[i] = new ToolStripSeparator();
separator[i].Size = new Size(181, 6);
// separator
stoptoolitem[i] = new ToolStripMenuItem();
stoptoolitem[i].Size = new Size(184, 24);
stoptoolitem[i].Text = "متوقف کردن";
stoptoolitem[i].Tag = i;
stoptoolitem[i].Click += new EventHandler(stoptoolitem_Click);
// stoptoolitem
printfactortoolitem[i] = new ToolStripMenuItem();
printfactortoolitem[i].Size = new Size(184, 24);
printfactortoolitem[i].Text = "چاپ فاکتور";
printfactortoolitem[i].Image = Image.FromFile(Application.StartupPath + "\\Pictures\\printerpic.png");
// printfactortoolitem
sendmessagetoolitem[i] = new ToolStripMenuItem();
sendmessagetoolitem[i].Size = new Size(184, 24);
sendmessagetoolitem[i].Text = "ارسال پیام";
sendmessagetoolitem[i].Image = Image.FromFile(Application.StartupPath + "\\Pictures\\send message.png");
sendmessagetoolitem[i].Click += new EventHandler(sendmessagetoolitem_Click);
// sendmessagetoolitem
resettimerstoolitem[i] = new ToolStripMenuItem();
sendmessagetoolitem[i].Size = new Size(184, 24);
resettimerstoolitem[i].Text = "صفر کردن شمارش گر ها";
resettimerstoolitem[i].Tag = i;
resettimerstoolitem[i].Click += new EventHandler(resettimerstoolitem_Click);
// resettimerstoolitem
closeclienttoolitem[i] = new ToolStripMenuItem();
closeclienttoolitem[i].Size = new Size(184, 24);
closeclienttoolitem[i].Text = "بستن برنامه کلاینت";
closeclienttoolitem[i].Tag = i;
closeclienttoolitem[i].Click += new EventHandler(closeclienttoolitem_Click);
// closeclienttoolitem
accounttoolitem[i] = new ToolStripMenuItem();
accounttoolitem[i].Size = new Size(184, 24);
accounttoolitem[i].Text = "حساب";
// accounttoolitem
txtaccounttoolitem[i] = new ToolStripTextBox();
txtaccounttoolitem[i].Size = new Size(100, 27);
txtaccounttoolitem[i].RightToLeft = RightToLeft.No;
txtaccounttoolitem[i].BackColor = SystemColors.ActiveBorder;
txtaccounttoolitem[i].Tag = i;
txtaccounttoolitem[i].KeyPress += new KeyPressEventHandler(txtaccounttoolitem_KeyPress);
// txtaccounttoolitem
cms[i] = new ContextMenuStrip();
cms[i].Items.AddRange(new ToolStripItem[]{
stoptoolitem[i],separator[i],
printfactortoolitem[i],separator[i],
sendmessagetoolitem[i],separator[i],
resettimerstoolitem[i],separator[i],
closeclienttoolitem[i],separator[i],
accounttoolitem[i],txtaccounttoolitem[i]});
cms[i].Size = new Size(185, 229);
cms[i].RightToLeft = RightToLeft.Yes;


ممنون از پاسخ
از این کد رو نوشتم براش همه رو به همون ترتیب قرار میده فقط با separator ها مشکل داره

mousa1992
چهارشنبه 11 مرداد 1391, 01:00 صبح
ممنون از پاسخ
از add هم استفاده کردم جواب نداد!!

Mahmoud.Afrad
چهارشنبه 11 مرداد 1391, 03:08 صبح
اشکال اینه که شما یک شئ separator که در separator[i] هست را میخواهید چندجا add کنید(یعنی مثلا [0]separator را میخوای چند بار add کنید که آخرسر به پایین منو منتقل میشه) پس بایستی از اشیاء separator مجزا استفاده کنید.
در نتیجه تکه کد زیر را حذف کنید
separator[i] = new ToolStripSeparator();
separator[i].Size = new Size(181, 6);
// separator


و addrange را به این صورت بنویسید
cms[i].Items.AddRange(new ToolStripItem[]{
stoptoolitem[i],new ToolStripSeparator(),
printfactortoolitem[i],new ToolStripSeparator(),
sendmessagetoolitem[i],new ToolStripSeparator(),
resettimerstoolitem[i],new ToolStripSeparator(),
closeclienttoolitem[i],new ToolStripSeparator(),
accounttoolitem[i],txtaccounttoolitem[i]});