View Full Version : contextmenustrip هنگام اجرا
  
mousa1992
یک شنبه 08 مرداد 1391, 00:07 صبح
سلام دوستان
contextmenustrip رو هنگام اجرا ایجاد میکنم تمام ایتم هاش رو به همون ترتیبی که میخوام اد میشه ولی separator ها اد نمیشه  و همشون توی اخرین مکانی که separator رو قرار دادم میافتن!! مشکل کجاست؟ ممنون
mousa1992
یک شنبه 08 مرداد 1391, 00: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, 02:00 صبح
ممنون از پاسخ 
از add  هم استفاده کردم جواب نداد!!
Mahmoud.Afrad
چهارشنبه 11 مرداد 1391, 04: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]});
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.