PDA

View Full Version : اضافه کردن کنترل در زمان اجرا و هندل کردن رویداد کلیک آن



bahar_engineer
جمعه 27 آذر 1388, 19:39 عصر
سلام

من می خوام یه یوزرکنترل توی زمان اجرا به فرم اضافه کنم و می خوام رویداد کلیک اونو هندل کنم

با این کد یوزرکنترل رو اضافه می کنم در زمان اجرا :


UserControl1 UserControl1 = new UserControl1();
this.Controls.Add(UserControl1);


و با این کد می خوام رویداد کلیکش رو هندل کنم اما اصلا عمل نمی کنه وقتی روش کلیک می کنم:


private void UserControl1_Click(object sender, EventArgs e)
{
MessageBox.Show("clicked");
}

public Form3()
{
InitializeComponent();

this.UserControl1.Click += new System.EventHandler(this.UserControl1_Click);

}


به نظر شما مشکل چیه ؟

fjm11100
شنبه 28 آذر 1388, 10:10 صبح
يه چيزي كم داره متد را به رويداد وصل نكردي
بنويس
=+ UserControl1.Click
بعد كليد tab را بزن خودش متد هندل كردن رويداد را ميسازه و متد را به اون رويداد وصل ميكنه

bahar_engineer
شنبه 28 آذر 1388, 10:22 صبح
يه چيزي كم داره متد را به رويداد وصل نكردي
بنويس
=+ UserControl1.Click
بعد كليد tab را بزن خودش متد هندل كردن رويداد را ميسازه و متد را به اون رويداد وصل ميكنه

اینو که نوشتم اگه دقت کنید اسکرول رو بیارین پایین رویداد رو کامل نوشتم

الان همه چیز درسته و پیغام رو نمایش می ده .. اما وقتی توی اون می خوام location یوزرکنترل رو بدست بیارم و توی تابع رسم خط بذارم اجرا نمی کنه نمی دونم باید لوکیشن رو توی صفحه یوزرکنترل بدست بیارم یا توی فرم ؟

یعنی یه فرم هست که دو تا یوزرکنترل در زمان اجرا به اون اضافه می کنم و می خوام لوکیشن های اونا رو بدست بیارم تا بتونم بینشون خط رسم کنم

تابع رسم خط رو توی صفحه یوزر که می ذارم اجرا نمی شه توی فرم هم همینطور یعنی هیچ خطی رسم نمی شه و به نظر من مشکل از نقاط ابتدا و انتهایی هست که برای خط معین کردم

اگه نقاط رو توی کلاس یوزرکنترل بدست بیارم اون وقت تابع رسم خط رو هم اونجا بذارم که خط دیگه توی فرم رسم نمی شه
اگه هم نقاط رو توی کلاس یوزرکنترل بدست بیارم اما تابع رسم خط رو توی فرم بذارم و متغیرها رو بهش پاس کنم هم باز خط رسم نشد

کسی می تونه چنین نمونه ای برام بذاره؟

amireto
شنبه 28 آذر 1388, 10:52 صبح
دوست عزیز کدی زیر بخشی از پروژه خودم بود
ابتدا روی خود فرم یک خواصیت از نوع user control درست کرده (Gate_select)و مساوی کنترل ابتدایی انتخاب شده قرار دهید حال در خود کنترل دوم کدهای زیر را می توانید قرار دهید


UserControl ct = ((Form1)this.Parent).Gate_Select;
start = ct.Location;
end = new Point((this.Location.X), (this.Location.Y) + this.Height / 3);
Wire line = new Wire(((Form1)this.Parent).CreateGraphics(), start, end);
line.Drow(InputOne);البته wire کلاسی برای رسم خط است که خودم نوشتم
موفق باشید

fjm11100
شنبه 28 آذر 1388, 12:29 عصر
شرمنده كه دقت نكردم
اما از چيزي كه گفتي فكر كنم توي بدست آوردن مختصات مشكل داري
ببين مختصات هر كنترلي در خصوصيت location نسبت به container اون كنترل است. يعني اگر يك فرم داشته باشي كه داخلش يك چيزي مثل پنل يا groupbox باشه و توي اون يك usercontrol مختصات شي داخل كنترلت نسبت به فرم ميشه مختصات پنل يا groupbox بعلاوه مختصات كنترلت بعلاوه مختصات شي داخل كنترلت. بعبارت ساده تر مختصات هر شي كه در location اون مياد نسبت به شي parent آن است نه نسبت به فرم

Miladkt.S.A.o
سه شنبه 12 اردیبهشت 1391, 19:46 عصر
سلام دوست عزیز
با این کد میتونی یه یوزر کنترل را به فرم اضافه کنی

usercontrol_References.Usercontrol_Name usercontrol_obj=new usercontrol_References.Usercontrol_Name();

this.Controls.Add(usercontrol_obj);

Point a=new Point(int b,int c);

datecmbobj.Location = a;

usercontrol_References:اسم References است که یوزر کنترل را از ان انتخاب کرده ای
Usercontrol_Name:نام یوزر کنترل است
usercontrol_obj:اسمی دلخوا است
int b و int c :دو عدد دلخواه

برای هندل کردن هم باید هنگام ساخت یوزرکنترل برای click هندل بگذاری تا در زمان اجرا عمل بکنه
موفق باشی:چشمک:

farooh
سه شنبه 26 اردیبهشت 1391, 09:57 صبح
protected void Page_Load(object sender, EventArgs e)
{
LoadLinkButton();
}
protected void LoadLinkButton()
{
LinkButton LinkButton1 = new LinkButton();
LinkButton1.Text = "Button Text";
LinkButton1.Click += new EventHandler(LinkButton1_Click);
this.PlaceHolder1.Controls.Add(LinkButton1);
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
this.Literal1.Text = "Link was clicked.";
}


این کد برای اضافه کردن linkbutton درست عمل می کنه اما اگه بجای اون از hyperlink به نام h1 استفاده کنم روی سطر مربوط به
h1.Click += new EventHandler(h1_Click);


خطا میده و کار نمی کنه چرا؟