PDA

View Full Version : Disable کردن Menu item ها



AmirAlimadadi
سه شنبه 30 تیر 1388, 14:42 عصر
با سلام به دوستان
یه سوال برای من پیش اومده که به نظر راحت می رسه اما واقعا برای من مشکل درست کرده.
من یه برنامه دارم که توی اون یه MenuStrip وجود داره، اون منو خودش چند تا زیر منو(MenuStripToolItem) داره. حالا با استفاده از برنامه نویسی، بر اساس شرایط موجود در برنامه، برخی از اون آیتم ها بایستی disable بشن، برای این کار Enable = False رو می نویسم، در نتیجه موقعی که کاربر بره روی اون آیتم، نمی تونه آیتم های زیرش(DropDownList) رو ببینه، تا اینجا مشکلی نیست، ولی اگه کاربر بره روی یه آیتمی که Enable هست و بعد بره روی آیتم Disable، اون وقت می تونه زیر آیتم های اون آیتم Disable رو هم ببینه، انگار نه انگار که من اون رو Disable کردم.
چه طور می تونم این مشکل رو حل کنم، ممنون.

saeedr22
سه شنبه 30 تیر 1388, 17:43 عصر
من همین الان امتحانش کردم و اگه منظورتون menustript باشه همچین مشکلی پیش نمیاد.

mohkami
سه شنبه 30 تیر 1388, 18:37 عصر
سلام،
من این رو هم روی 2008 تست کردم و هم روی 2005 در هر دو این مشکل وجود داشت!!!

saeedr22
سه شنبه 30 تیر 1388, 18:57 عصر
میشه یه sample بزارین ببینیم؟

mohkami
سه شنبه 30 تیر 1388, 19:16 عصر
سلام مجدد،
آقای علی مددی جواب رو بدست آوردم،

2 راه داره:

1_ خودت یک کلاس ToolStripMenuItem بسازی و Event OnPaint کلاست رو Override کنی.
و این کلاس رو با کد وارد برنامت کنی و استفاده کنی.
این یک مثال برای کلاس:

public partial class toolitem : System.Windows.Forms.ToolStripMenuItem
{

protected override void OnPaint(PaintEventArgs e)
{
if(!Enabled)
this.DropDown.Visible = false;
else
this.DropDown.Visible = true;
}
}


2_ یا اینکه مشخصاً این کد رو توی یکی از Event هایPain یا mouse enter یا mouse hover اون ToolStripMenuItem ی که disable شده قرار بده:
( toolStripMenuItem3 اسم اونی هست که disable شده)



if(!Enabled)
toolStripMenuItem3.DropDown.Visible = false;
else
toolStripMenuItem3.DropDown.Visible = true;


اگه از این سوالی داشتید بپرسید!
:لبخندساده:

saeedr22
سه شنبه 30 تیر 1388, 22:19 عصر
:خجالت:خیلی عذر میخوام من منظور شما رو درست متوجه نشده بودم و Dropdown رو امتحان نکرده بودم.شرمنده.

AmirAlimadadi
چهارشنبه 31 تیر 1388, 08:24 صبح
ممنون از شما، ولی سوال اینجاست که چرا اینجوری هست، مگه به طور منطقی نباید زیر منوها مخفی باشن؟؟!!