以下是一段代码,因此文本框(“TxtInput1”)中只有一个小数,只有一个数字:
private void TxtInput1_TextChanged(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
{
e.Handled = true;
}
// only allow one decimal point
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
{
e.Handled = true;
}
}
但它给了我以下错误:
CS0123“TxtInput1_TextChanged”的超载与委托匹配 '事件处理'
我点击了错误并弹出了这个:
form1.TxtInput1.Location = new System.Drawing.Point(92, 111);
form1.TxtInput1.Name = "TxtInput1";
form1.TxtInput1.Size = new System.Drawing.Size(43, 20);
form1.TxtInput1.TabIndex = 8;
form1.TxtInput1.TextChanged += new System.EventHandler(form1.TxtInput1_TextChanged);
第System.EventHandler(form1.TxtInput1_TextChanged);
行标有红色,表示错误。对此问题有任何解决方法吗?
答案 0 :(得分:2)
您的方法的签名与处理TextChanged事件所需的签名不匹配。 TextChanged事件的第二个参数只是:startGame
cls
echo New Game / Load Game
echo.
echo Create New : (N)
echo Load Save : (L)
echo.
set /p NL=
if %NL% == n goto newGame
if %NL% == l goto loadGame
goto startGame
:loadGame
cls
echo Enter the name of your saved file.
echo.
set/p ldName=Enter:
(
set /p name= %name%
set /p exp= %exp%
set /p money= %money%
set /p deaths= %deaths%
set /p lvl= %lvl%
set /p hp= %hp%
set /p pwr= %pwr%
) < %ldName%.sav
goto advent2
:advent2
cls
echo Name: %name%
echo Experience Points: %exp%
echo Gold: %money%
echo Total Deaths: %deaths%
echo Current Level: %lvl%
echo Total Health Points: %hp%
echo Power Level: %pwr%
echo.
pause
goto advent3_1
。但是如果你把它改成那样,你的方法的内容就不会编译了。
从方法的签名看,您需要将其挂钩到KeyPress事件。
答案 1 :(得分:1)
将您的处理程序TxtInput1_TextChanged
订阅到KeyPress
TxtInput1
的事件,而不是TextChanged
。错误是由于代表签名不匹配造成的。
更改为:
form1.TxtInput1.KeyPress+= new System.KeyPressEventHandler(form1.TxtInput1_TextChanged);