PDA

View Full Version : context menu



hrshojaei
یک شنبه 14 مرداد 1386, 09:45 صبح
سلام ، من روی یه فرم دوتا MaskedTextBox دارم که می خوام با یه Context Menu تاریخ امروز رو در هر کدوم وارد کنم . یعنی کاربر روی هر کدوم که right clck کرد context menu باز شه و تنها گزینش هم تاریخ امروز باشه . بعد اگه کاربر روی اون گزینه کلیک کرد تاریخ امروز رو داخل همون MaskedTextBox که روش کلیک راست شده وارد شه . حالا چه جوری می تونم با یک contextmenu اینو پیاده سازی کنم . مشکل اینجاست که چه جوری می تونم بفهمم الان روی کدوم maskedtextbox راست کلیک شده تا بتونم تاریخ رو داخل اون بریزم .
یا اینکه باید دو تا contextmenu داشته باشم و برای هرکدام از maskedtextbox جداگانه بنویسم . ممنون از راهنماییتون

mehdi.mousavi
یک شنبه 14 مرداد 1386, 09:59 صبح
سلام ، من روی یه فرم دوتا MaskedTextBox دارم که می خوام با یه Context Menu تاریخ امروز رو در هر کدوم وارد کنم . یعنی کاربر روی هر کدوم که right clck کرد context menu باز شه و تنها گزینش هم تاریخ امروز باشه . بعد اگه کاربر روی اون گزینه کلیک کرد تاریخ امروز رو داخل همون MaskedTextBox که روش کلیک راست شده وارد شه . حالا چه جوری می تونم با یک contextmenu اینو پیاده سازی کنم . مشکل اینجاست که چه جوری می تونم بفهمم الان روی کدوم maskedtextbox راست کلیک شده تا بتونم تاریخ رو داخل اون بریزم .
یا اینکه باید دو تا contextmenu داشته باشم و برای هرکدام از maskedtextbox جداگانه بنویسم . ممنون از راهنماییتون


سلام.
خیر! شما نیازی به داشتن دو ContextMenuStrip ندارید. کافیست تا ItemClicked Event مربوط به ContextMenuStrip رو بگیرید و سپس با استفاده از کد زیر تشخیص بدین که Item ای که Select شده، روی کدوم MaskedTextBox بوده:


private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
ContextMenuStrip ctx = (ContextMenuStrip)sender;

MaskedTextBox txt = (MaskedTextBox)ctx.SourceControl;
txt.Text = e.ClickedItem.Text;
}

در واقع این اطلاعات در SourceControl Property ذخیره شده.

first_squit
یک شنبه 18 آذر 1386, 20:38 عصر
خیلی ممنون خیلی دنبال این نکته گشته بودم :قلب::قلب::قلب: