PDA

View Full Version : user control



iranrose63
پنج شنبه 29 آذر 1386, 13:30 عصر
سلام
من یه usercontrol ایجاد کردم که دو کنترل label و picturebox رو اون قرار دادم حالا می خوام تو برنامه از این usercontrol استفاده کنم الان یه مشکل دارم می خوام وقتی تو برنامه روی این کنترل کلیک میکنم یه سری اعمال انجام بشه ولی اگه روی label یا picturebox کلیک کنم این اعمال انجام نمیشن حالا باید چیکار کنم که کلیک label و picturebox که من تو usercontrol گذاشتم با کدی که من تو برنامه برای کلیک این usercontrol نوشتم مرتبط بشه

sinpin
پنج شنبه 29 آذر 1386, 13:42 عصر
سلام
من یه usercontrol ایجاد کردم که دو کنترل label و picturebox رو اون قرار دادم حالا می خوام تو برنامه از این usercontrol استفاده کنم الان یه مشکل دارم می خوام وقتی تو برنامه روی این کنترل کلیک میکنم یه سری اعمال انجام بشه ولی اگه روی label یا picturebox کلیک کنم این اعمال انجام نمیشن حالا باید چیکار کنم که کلیک label و picturebox که من تو usercontrol گذاشتم با کدی که من تو برنامه برای کلیک این usercontrol نوشتم مرتبط بشه

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

iranrose63
یک شنبه 02 دی 1386, 10:50 صبح
میشه یه خورده بیشتر توضیح بدید البته اگه ممکنه با مثال
ممنون

sinpin
یک شنبه 02 دی 1386, 12:20 عصر
سلام
من یه usercontrol ایجاد کردم که دو کنترل label و picturebox رو اون قرار دادم حالا می خوام تو برنامه از این usercontrol استفاده کنم الان یه مشکل دارم می خوام وقتی تو برنامه روی این کنترل کلیک میکنم یه سری اعمال انجام بشه ولی اگه روی label یا picturebox کلیک کنم این اعمال انجام نمیشن حالا باید چیکار کنم که کلیک label و picturebox که من تو usercontrol گذاشتم با کدی که من تو برنامه برای کلیک این usercontrol نوشتم مرتبط بشه


میشه یه خورده بیشتر توضیح بدید البته اگه ممکنه با مثال
ممنون

من منظورتون رو دقیق نگرفتم اما با توجه به چیزی که خواسته بودید (مرتبط کردن کلیک یوزر کنترل به کلیک یکی از کنترلها) من فکر میکنم کافیه که این کد رو بنویسید :


public partial class MyControl : UserControl
{
public MyControl()
{
InitializeComponent();
this.Click += new EventHandler(button1_Click);
}

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(textBox1.Text);
}
}

کد بالا یک یوزرکنترل است که یک تکست باکس و یک دکمه دارد.

iranrose63
یک شنبه 02 دی 1386, 13:10 عصر
نه دوست عزیز منظور من این نیست اگه من بخوام کد button1_click که شما تو usercontrol نوشتید رو تو برنامم بنویسم باید چیکار کنم
برای اینکه متوجه منظور من بشید یه usercontrol بسازید و یه label و یه picturebox رو اون قرار بدید حالا این controlجدید رو تو یه برنامه قرار بدید تو event کلیک اون یه کد بنویسید و بعد برنامه رو اجرا کنید اگه روی label یا picturebox کلیک کنید کد شما اجرا نمیشه مگه اینکه دقیقا روی خود usercontrol کلیک کنید من میخوام رو هر کدوم از اعضای کنترل که کلیک شد اون کد اجرا بشه

ARA
یک شنبه 02 دی 1386, 13:56 عصر
سلام باید خودت تو یوزر کنترلت یک event بنویسی و تو برنامت اون رو هندل کنی

برای event هر ایتم user control که میخوای انجام بشه
event تعریف کن


public delegatevoid MyLabelEventHandler();
public event MyLabelEventHandler myLabelOnCLicked;


و تو event خاصی که میخوای کاری انجام بشه event را fire کن
(در داخل user Control)


privatevoid label1_Click(object sender, EventArgs e)
{
myLabelOnCLicked();
}


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



useControl1.myLabelOnCLicked += new useControl1.MyLabelEventHandler(userControl_LabelC licked);

privatevoid userControl_LabelClicked
()
{
// حالا اینجا دستوراتت رو بنویس
}

iranrose63
دوشنبه 03 دی 1386, 09:06 صبح
واقعا ممنونم یه مشکل بزرگ منو حل کردید ممنون میشم اگه به سوال دیگمم جواب بدید من می خوام برای usercontrol یه خاصیت تعریف کنم ولی می خوام مقادیری که این خاصیت می گیره یه چیزهای مشخصی باشند یه چیزی شبیه خاصیت cursor یعنی بتونم مقادیر رو از یه combobox انتخاب کنم آیا می تونم این کار رو بکنم اگه میتونم چه طوری؟
بازم ممنونم

sinpin
سه شنبه 04 دی 1386, 07:41 صبح
واقعا ممنونم یه مشکل بزرگ منو حل کردید ممنون میشم اگه به سوال دیگمم جواب بدید من می خوام برای usercontrol یه خاصیت تعریف کنم ولی می خوام مقادیری که این خاصیت می گیره یه چیزهای مشخصی باشند یه چیزی شبیه خاصیت cursor یعنی بتونم مقادیر رو از یه combobox انتخاب کنم آیا می تونم این کار رو بکنم اگه میتونم چه طوری؟
بازم ممنونم

میتونید یک enum تعریف کنید. برای مثال :


public enum InputLanguages
{
English,
Farsi
}


#region Implements IDefaultLanguage Members

private InputLanguages defaultLanguage;
[DefaultValue(InputLanguages.Farsi)]
public InputLanguages DefaultLanguage
{
get { return defaultLanguage; }
set
{
if (value == InputLanguages.English)
{

this.TextAlign = HorizontalAlignment.Left;
}
else
{
Common.LanguageHelper.SetLanguageToFarsi();
this.TextAlign = HorizontalAlignment.Right;
}
defaultLanguage = value;
}
}

#endregion