PDA

View Full Version : سوال: دکمه سفارشی



rezamansori
شنبه 10 تیر 1391, 15:42 عصر
سلام دوستان
من به واسطه ی User Control یک دکمه سفارشی ساختم که یک لیبل داره که کل User Control رو میپوشونه اما وقتی تو پروژه لودش کردم دیدم که نمیشه براش کد نوشت چون رویداد کلیک متعلق به لیبل نیست بلکه متعلق به User Control هست و چون لیبل اون رو می پوشونه نمیشه روش کلیک کرد.
کسی بلده رویداد Click لیبل رو جوری Public کنه که از پروژه بشه بهش دسترسی داشت؟

the king
شنبه 10 تیر 1391, 16:02 عصر
سلام دوستان
من به واسطه ی User Control یک دکمه سفارشی ساختم که یک لیبل داره که کل User Control رو میپوشونه اما وقتی تو پروژه لودش کردم دیدم که نمیشه براش کد نوشت چون رویداد کلیک متعلق به لیبل نیست بلکه متعلق به User Control هست و چون لیبل اون رو می پوشونه نمیشه روش کلیک کرد.
کسی بلده رویداد Click لیبل رو جوری Public کنه که از پروژه بشه بهش دسترسی داشت؟

انجام دادنش خیلی ساده است، وقتی رخداد Click ئه Label بروز کرد، رخداد Click ئه UserControl را فراخوانی می کنیم :


public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}

private void label1_Click(object sender, EventArgs e)
{
base.OnClick(e);
}
}


اما در کل کار درستی انجام نمی دهید، اگر وجود اون Label برای اینه که متنی رو نمایش بدهید، بجای اینکه Label روی فرم قرار بدهید، در داخل OnPaint
اون UserControl متن مورد نظر رو DrawString کنید :

public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);
e.Graphics.DrawString("Sample Text", this.Font, new SolidBrush(this.ForeColor), rect, format);
}
}