سلام
نمیدونستم چی عنوان بزارم !
من یک Panel دارم که X تا کنترل از نوع UserControl به اون اضافه شده ،
چطوری کاری کنم که وقتی موس بره روی یک کنترل ، فرم2 باز شه و اسم اون کنترل رو توی Textـه فرم2 بنویسه ؟(از ToolTip نمیخوام استفاده کنم)
ممنون
سلام
نمیدونستم چی عنوان بزارم !
من یک Panel دارم که X تا کنترل از نوع UserControl به اون اضافه شده ،
چطوری کاری کنم که وقتی موس بره روی یک کنترل ، فرم2 باز شه و اسم اون کنترل رو توی Textـه فرم2 بنویسه ؟(از ToolTip نمیخوام استفاده کنم)
ممنون
اگر هدف شما فقط نمایش نام کنترله اصلا این کار پیشنها نمیشه! برای یه کار کوچیک فرم باز نکنید.
در هر صورت من کد رو برای شما قرار میدم:
فرم1:
[CSHARP]
Form frm = null;
private void Form1_Load(object sender, EventArgs e)
{
// ADD EVENT TO ALL CONTROLS PLACED IN THE PANEL
foreach (Control controlItem in panel1.Controls)
{
controlItem.MouseHover += new EventHandler(INF_show);
controlItem.MouseLeave += new EventHandler(INF_hide);
}
}
public void INF_show(object sender, EventArgs e)
{
// OPEN THE FORM AND SEND CONTROL NAME FOR CONTRUCTOR
string ctrlName = ((Control)sender).Name;
frm = new Form2(ctrlName);
frm.Show();
}
public void INF_hide(object sender, EventArgs e)
{
frm.Close();
}
[/CSHARP]
فرم2:
پارامتر control_name رو به Constructor فرم 2 اضافه کنید و بعد مقدار رو بگیرید:
[CSHARP]
public Form2(string control_name)
{
InitializeComponent();
lblCnt.Text = control_name;
}
[/CSHARP]
[url]http://www.softafzar.net/thread599.html/[/url]
تو مثال بالا میتونی Modifiers کنترل رو روی public بذاری تا بتونی مستقیما ازتو فرم یک مقدارشو تغییر بدی.
ندونستن عیب نیست، نپرسیدن چرا!