PDA

View Full Version : خطای ایجاد شده در ساخت کنترل جدید



MMRavari
دوشنبه 20 خرداد 1398, 03:37 صبح
من برای ساخت کنترل تکست باکس جدید یک Usercontrol ایجاد کردم
در زمان Build کردن با خطای زیر مواجه میشم


No overload for 'ExtdTextBox_KeyPress' matches delegate 'KeyPressEventHandler
ممنون میشم راهنمایی کنید

davidrobert
چهارشنبه 22 خرداد 1398, 19:20 عصر
برای ساخت کنترول TextBox از کلاس استفاده کنید نه از Uusercontrol
به طور مثال این کادر متن سفارشی برای کادر متن پولی هستش
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Aramestan.Controller
{
public class TxtMoney : TextBox
{
protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);
if (!(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar)))
{
e.Handled = true;
}
//NumberFormatInfo fi = CultureInfo.CurrentCulture.NumberFormat;

//string c = e.KeyChar.ToString();
//if (char.IsDigit(c, 0))
// return;

//if ((SelectionStart == 0) && (c.Equals(fi.NegativeSign)))
// return;

//// copy/paste
//if ((((int)e.KeyChar == 22) || ((int)e.KeyChar == 3))
// && ((ModifierKeys & Keys.Control) == Keys.Control))
// return;

//if (e.KeyChar == '\b')
// return;

//e.Handled = true;
}

protected override void OnTextChanged(EventArgs e)
{
try
{
base.OnTextChanged(e);

NumberFormatInfo provider = new NumberFormatInfo
{
NumberDecimalDigits = 0
};
this.Text = decimal.Parse(this.Text, NumberStyles.AllowThousands).ToString("N", provider);
base.Select(this.Text.Length, 0);
}
catch
{
}
}

protected override void OnEnter(EventArgs e)
{
BackColor = Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128)))));
base.OnEnter(e);
}

protected override void OnLeave(EventArgs e)
{
BackColor = Color.White;
base.OnLeave(e);
}
}
}

به این روش کادر متن تمام امکانات خودش داره ولی اون روش خیلی اذیت میشید