نقل قول: تبدیل رشته به نام کنترل
باید ببینید این کنترل ها که می گی داخل کدوم کنترل هستند، مثلا اگر داخل یه کنترل یه اسم menu1 باشند (یعنی این parent شون باشه) میشه این کار رو کرد
menu1.Controls["some_name"];
البته اگر این رشته واقعا اسم کنترل باشه، ولی اگر محتوا یا Text اون باشه باید با یه حلقه for توی کنترل ها بگردی و پیداش کنی
نقل قول: تبدیل رشته به نام کنترل
ممنون از جوابت اما کار نمیده این کد
نهایتن با راهنمایی های که دوستان نکردن به این نتیجه رسیدم
کل ایتم های که menuStrip داره رو تو حلقه بزارم و هر بار چک کنم اسم ایتم رو اگه اکی بود غیر فعالش کنم
که خودم اصلا با این کار موافق نیستم و هزینش زیاده
بازم ممنون
نقل قول: تبدیل رشته به نام کنترل
شما میتونید از forech استفاده کنید به این صورت
foreach (MenuItem item2 in mymenu.Items)
{
if(item2.Name="نام منو")
{
item2.visable=false;
}
}
تو نوت پد نوشتم خودتون اصلاح کنید.
نقل قول: تبدیل رشته به نام کنترل
نقل قول:
نوشته شده توسط
رامین مرادی
شما میتونید از forech استفاده کنید به این صورت
foreach (MenuItem item2 in mymenu.Items)
{
if(item2.Name="نام منو")
{
item2.visable=false;
}
}
تو نوت پد نوشتم خودتون اصلاح کنید.
سلام ممنون از وقتی که گذاشتی فقط دوتا مورد
1 اینکه این کد ی که نوشتی فقط منو های اصلی رو میبینه و زیر منو ها رو چک نمیکنه
2 اینکه با حلقه زیاد موافق نیستم چون هزینه زمانیش زیاده هرچند ظاهرا مجبورم از همین استفاده کنم
قطعا باید یه راهی باشه که تکست رو تبدیل به نام ایتم کرد و بعد غیر فعالش کرد
در هر صورت بازم ممنون
نقل قول: تبدیل رشته به نام کنترل
برای انجامش مجبور شدم این کارو انجام بدم
هرچند هنوزم با حلقه موافق نیستم
مینویسم تا بقیه هم استفاده کنن
اول این متد رو اضافه کردم
private IEnumerable<ToolStripItem> GetItems(ToolStripItem item)
{
if (item is ToolStripMenuItem)
{
foreach (ToolStripItem tsi in (item as ToolStripMenuItem).DropDownItems)
{
if (tsi is ToolStripMenuItem)
{
if ((tsi as ToolStripMenuItem).HasDropDownItems)
{
foreach (ToolStripItem subItem in GetItems((tsi as ToolStripMenuItem)))
yield return subItem;
}
yield return (tsi as ToolStripMenuItem);
}
else if (tsi is ToolStripSeparator)
{
yield return (tsi as ToolStripSeparator);
}
}
}
else if (item is ToolStripSeparator)
{
yield return (item as ToolStripSeparator);
}
}
بعد تو لود فرمم
اینو نوشتم
//این یه کلاسه که خودم نوشتم وشما باید به هر روشی که میدونید لیست منوهای که نباید دسترسی داشته باشن رو بیرون بکشید
Connection.connect("SELECT_NOT_DASRESI", public_variabel.par = new string[] { "@_username" }, public_variabel.obj = new object[] { Parametr_pas.get_username() }, 1, true, false);
List<ToolStripItem> allItems = new List<ToolStripItem>();
foreach (ToolStripItem toolItem in menuStrip1.Items)
{
allItems.Add(toolItem);
//add sub items
allItems.AddRange(GetItems(toolItem));
}
foreach (DataRow row in Connection.DataSet().Tables[0].Rows)
foreach (ToolStripItem toolItem in allItems)
{
if (toolItem.Name == row[0].ToString())
toolItem.Enabled = false;
}
اما اگه کسی از دوستان میتونه کمک کنه از همون روش که اول گفتم این کار انجام بشه خیلی خیلی بهتره
foreach (DataRow row in Connection.DataSet().Tables[0].Rows)
{
((Control)row[0].ToString()).Enabled = false;
}
یعنی تکست رو تبدیل به نام ایتم کنیم
نقل قول: تبدیل رشته به نام کنترل
سلام
Button btn = (Button)this.Controls["button5"];
btn.Enabled = false;
this.Controls["button5"].Enabled= false;
نقل قول: تبدیل رشته به نام کنترل
نقل قول:
نوشته شده توسط
svhasvha
اما اگه کسی از دوستان میتونه کمک کنه از همون روش که اول گفتم این کار انجام بشه خیلی خیلی بهتره
foreach (DataRow row in Connection.DataSet().Tables[0].Rows)
{
((Control)row[0].ToString()).Enabled = false;
}
یعنی تکست رو تبدیل به نام ایتم کنیم
مطمئن باش اینجور چیزی اصلا وجود نداره!!!
نقل قول: تبدیل رشته به نام کنترل
نقل قول:
نوشته شده توسط
shahryari
سلام
Button btn = (Button)this.Controls["button5"];
btn.Enabled = false;
this.Controls["button5"].Enabled= false;
ممنون از راهنماییت
l
نقل قول: تبدیل رشته به نام کنترل
نقل قول:
نوشته شده توسط
mrbm_2007
مطمئن باش اینجور چیزی اصلا وجود نداره!!!
سلام مطمئن باش یه همچین چیزی وجود داره چون خودم قبلا ازش استفاده کردم ولی نگارشش یادم رفته
درهر صورت ممنون
نقل قول: تبدیل رشته به نام کنترل
یک مثال برای تکست باکس
List<string> list1 = new List<string>();
list1.Add("textBox1");
list1.Add("textBox2");
list1.Add("textBox3");
list1.Add("textBox4");
foreach (string txt in list1)
{
TextBox tbx = this.Controls.Find(txt, true).FirstOrDefault() as TextBox;
if (tbx != null)
tbx.Enabled = false;
}
برای منو
List<string> list1 = new List<string>();
list1.Add("item1");
list1.Add("item2");
list1.Add("item3");
list1.Add("item4");
foreach (string txt in list1)
{
ToolStripMenuItem items = menuStrip1.Items.Find(txt, true).FirstOrDefault() as ToolStripMenuItem;
if (items != null)
items.Enabled = false;
}
«دوچیز بیپایان است: اول «کهکشان»، دوم «حماقت بشر»، در مورد اول زیاد مطمئن نیستم.»
نقل قول: تبدیل رشته به نام کنترل
البته با روش بازگشتی یا recursive هم قابل انجامه، یه متد مینویسی که یه پارامتر ورودی از نوع toolstripmenu یا آیتمش میگیره حالا داخل متد باید به ازای هر فرزندی که این منو داره دوباره متد رو با پارامتر فرزند این منو فراخوانی کنی و در هر فراخوانی عملیات چک کردن اسم آیتم و غیرفعال کردنشون رو انجام میدی
نقل قول: تبدیل رشته به نام کنترل
نقل قول:
نوشته شده توسط
svhasvha
سلام مطمئن باش یه همچین چیزی وجود داره چون خودم قبلا ازش استفاده کردم ولی نگارشش یادم رفته
درهر صورت ممنون
باشه، شاید شما تجربه بیشتری توی #C داری، یادت اومد اینجا بذار!
ولی من با تجربه 10 ساله خودم میگم اینجور چیزی وجود نداره که استرینگ رو به کنترل کست کنه!
نقل قول: تبدیل رشته به نام کنترل
نقل قول:
نوشته شده توسط
mrbm_2007
باشه، شاید شما تجربه بیشتری توی #C داری، یادت اومد اینجا بذار!
ولی من با تجربه 10 ساله خودم میگم اینجور چیزی وجود نداره که استرینگ رو به کنترل کست کنه!
دوستم گلماول اینکه ما جسارت نکردیم
دوم اینکه ممنون از وقتو پیگیریت
یه چیزایی یادم اومد که میزام
حالا شما لطف کنید ببینید چطور اینو تامیم بدیم به ایتم های menuStrip
Control ctn = this.Controls["label1"];
ctn.BackColor = Color.Red;
دقیقا می خوام همین اتفاق برای ایتم های منو بیفته
من یه لیست از اسامی ایتم ها دارم حالا بدون استفاده از هیچ حلقه ای و جستجویی میخوام مستقیم بگم ایتمی که اسمش اینه رو غیر فعال کن!!!
نقل قول: تبدیل رشته به نام کنترل
سلام ممنون از راهنماییت جوابتون کاملا درست و قابل انجامه اما مشکل اینجاست نمی خوام چیزی رو چک کنم و نه حلقه استفاده کنم
من میخوام با استفاده از اسمی که از ایتم دارم مستقیم اونو صدا کنم و....
سادش این که اسم ایتم رو دارم حالا میخوام بگم ایتمی که اسمش اینه مثلا غیر فعال بشه یا تکستش این بشه یا........
نقل قول: تبدیل رشته به نام کنترل
نقل قول:
نوشته شده توسط
svhasvha
سلام ممنون از راهنماییت جوابتون کاملا درست و قابل انجامه اما مشکل اینجاست نمی خوام چیزی رو چک کنم و نه حلقه استفاده کنم
من میخوام با استفاده از اسمی که از ایتم دارم مستقیم اونو صدا کنم و....
سادش این که اسم ایتم رو دارم حالا میخوام بگم ایتمی که اسمش اینه مثلا غیر فعال بشه یا تکستش این بشه یا........
مجبور به جستجو هستید. برای منو چون دارای زیرمنو هست از یک متد بازگشتی استفاده کنید.
نقل قول: تبدیل رشته به نام کنترل
به نظرم مجبور نباشم!! چون مستقیم میتونم ایتم هار صدا کنم !!!
یعنی مستقیم میتونم اسم زیر منور وصدا کنم وغیر فعالش کنم
نقل قول: تبدیل رشته به نام کنترل
نقل قول:
نوشته شده توسط
svhasvha
سلام ممنون از وقتی که گذاشتی فقط دوتا مورد
1 اینکه این کد ی که نوشتی فقط منو های اصلی رو میبینه و زیر منو ها رو چک نمیکنه
2 اینکه با حلقه زیاد موافق نیستم چون هزینه زمانیش زیاده هرچند ظاهرا مجبورم از همین استفاده کنم
قطعا باید یه راهی باشه که تکست رو تبدیل به نام ایتم کرد و بعد غیر فعالش کرد
در هر صورت بازم ممنون
برا زیر منو ها حلقه های داخلی ایجاد کنید. من برا خوانایی بیشتر یک حلقه نوشتم.
مگه چندتا منو دارید؟:متفکر: من خودم فعلا و در حال حاضر 182 تا منو و زیر منو دارم که تا سه سطح هستند. با خیال راحت میتونم بگم کمتر از یک ثانیه این عملیات مخفی کردن منو انجام میشه. کاربر این موردو اصلا متوجه نمیشه. امتحان کنید ببینید چقدر ملموسه این مورد که دنبال جایگزین روش دیگه ای هستید.