PDA

View Full Version : ایجاد رویداد برای گرافیک های ایجاد شده



mousa1992
یک شنبه 05 شهریور 1391, 17:54 عصر
سلام دوستان
ممنون از حضور و توجهتون
اشکال گرافیکی رو در فرم رسم میکنیم (مثلا یه دایره و یا مستطیل) ، چطور میتونیم رویداد هایی مثل کلیک کردن و یا Mouse Enter و .. . بهش نسبت بدیم ؟؟

alitavakoli
یک شنبه 05 شهریور 1391, 18:46 عصر
سلام
شما میتونید رویداد کلیک یا mousehover و ... فرم رو به مستطیل یا ... assign کنید
نمونه کد:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Click += Form1_Click;
}
Rectangle rect;
private void Form1_Click(object sender, EventArgs e)
{
Point cursorPos = this.PointToClient(Cursor.Position);
if (rect.Contains(cursorPos))
{
MessageBox.Show("in-ask programming question here:http://www.naras.ir");
}
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
Pen blackPen = new Pen(Color.Black, 3);
rect = new Rectangle(0, 0, 200, 100);
e.Graphics.DrawEllipse(blackPen, rect);
}
}

navid_8x
یک شنبه 05 شهریور 1391, 18:50 عصر
این کشیدن موقته و اگه فرم رو مینمایز و ماکسیمایز کنین پاک میشه

alitavakoli
یک شنبه 05 شهریور 1391, 18:53 عصر
این کشیدن موقته و اگه فرم رو مینمایز و ماکسیمایز کنین پاک میشه

تست کردم پاک نمیشه

mousa1992
یک شنبه 05 شهریور 1391, 21:22 عصر
چرا توی Form_load نمیشه اشکال گرافیکی رسم کرد ؟


این کشیدن موقته و اگه فرم رو مینمایز و ماکسیمایز کنین پاک میشه توجه نکرده بودم ، اره پاک میشه - چه راه حلی وجود داره ؟

مستطیلی دارم که transparent هست ، کلیک رو تشخیص نمیده ! مستطیل های توپر رسم کرد عمل میکرد ممنون


ممنون از پاسخ همه دوستان

مهرداد صفا
یک شنبه 05 شهریور 1391, 23:08 عصر
سلام
در هنگام Resize یا جا به جا شدن فرم دوباره رسم میشود و به همین دلیل اشکال نیز باید دوباره رسم شوند در هنگام Load شدن فرم هم اگر شکلی رسم شود با نمایش و یا تغییر اندازه فرم که بعد از رویداد load اتفاق می افتد فرم دوباره رسم شده و اجسام گرافیکی محو میشوند که با کشیدن اجسام در رویداد paint این مشکل حل میشود.