C# 很新手的问题,如何在textBox聚焦时,用KeyPress事件响应Form1中的button_Click事件?
如题,可能问的不是很精确。就是按一下键盘上的NumPad0,form1上的button0按钮就Click一次.我这样声明的button1_Clickprivatevoid...
如题,可能问的不是很精确。
就是按一下键盘上的NumPad0,form1上的button0按钮就Click一次 .
我这样声明的button1_Click
private void button1_Click(object sender,EventArgs e)
{
string val = textBox.Text;
if (val == "0")
val = "";
string i = "1";
val += i;
textBox.Text = val;
}
汗,我自己想了一种笨方法。弄成了吧,总算是弄成了。
我是加了一个textbox控件,设置name为 tempBox,并拉到窗体看不到的部分。
利用的TextChanged事件。
先往原来的button[num]_Click()事件和Form_Load()事件里里加一行代码:
//[num]代表数字,如0
tempBox.Focus();
//Form_Load()另加一行 tempBox.Text = ".";
然后在双击tempBox控件:
tempBox_TextChanged(object sender,EventArgs e)
{
if (tempBox.Text = ".[num]")
button[num]_Click(null,null); //[num]代表数字
if (tempBox.Text = "")
buttonBackspace_Click(null,null); //删除一个数字
tempBox.Text = ".";
}
这样就OK了! 虽然很笨,但是却能在我现在所用的代码的基础上实现利 展开
就是按一下键盘上的NumPad0,form1上的button0按钮就Click一次 .
我这样声明的button1_Click
private void button1_Click(object sender,EventArgs e)
{
string val = textBox.Text;
if (val == "0")
val = "";
string i = "1";
val += i;
textBox.Text = val;
}
汗,我自己想了一种笨方法。弄成了吧,总算是弄成了。
我是加了一个textbox控件,设置name为 tempBox,并拉到窗体看不到的部分。
利用的TextChanged事件。
先往原来的button[num]_Click()事件和Form_Load()事件里里加一行代码:
//[num]代表数字,如0
tempBox.Focus();
//Form_Load()另加一行 tempBox.Text = ".";
然后在双击tempBox控件:
tempBox_TextChanged(object sender,EventArgs e)
{
if (tempBox.Text = ".[num]")
button[num]_Click(null,null); //[num]代表数字
if (tempBox.Text = "")
buttonBackspace_Click(null,null); //删除一个数字
tempBox.Text = ".";
}
这样就OK了! 虽然很笨,但是却能在我现在所用的代码的基础上实现利 展开
展开全部
呵呵 是做计算器的程序吗?假设是按0键需要响应button0_Click
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '0')
{
button0_Click(null, null);
e.Handled = true; //这里是忘了加这一句
}
}
我觉得比较好的做法是将textBox的Enabled设为false,不让textBox获得焦点,并设置相应的背景色,文本颜色
然后将Form的KeyPreview设为true,让form来响应键盘事件,这样可以form1的KeyDown事件中处理相应的键盘按键,这里也不需要上面的补充的那句代码了
另外最好在每次处理按键事件后,将焦点都设置到“=”按钮上,或者窗口上,这样可以避免在按回车键的时候,处理的却不是“=”代码的问题
这样改动一下的话,运行起来效果会更好一点
输入数字部分的代码供参考
private string tempValue = string.Empty;
private void frmMain_Load(object sender, EventArgs e)
{
tempValue = txtResult.Text;
btnEquals.Focus();
}
private void btnNum_Click(object sender, EventArgs e)
{
//数字按钮的名称为btnNum0, btnNum1, btnNum2, ... btnNum8, btnNum9
string val = (sender as Button).Name;
val = val.Substring(val.Length - 1);
ProcessNum(int.Parse(val));
}
private void frmMain_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue >= 48 && e.KeyValue <= 57) //数字小键盘的按键未处理
{
ProcessNum(e.KeyValue - 48);
}
}
private void ProcessNum(int value)
{
if (tempValue == "0")
tempValue = "";
tempValue += value.ToString();
txtResult.Text = tempValue;
btnEquals.Focus();
}
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '0')
{
button0_Click(null, null);
e.Handled = true; //这里是忘了加这一句
}
}
我觉得比较好的做法是将textBox的Enabled设为false,不让textBox获得焦点,并设置相应的背景色,文本颜色
然后将Form的KeyPreview设为true,让form来响应键盘事件,这样可以form1的KeyDown事件中处理相应的键盘按键,这里也不需要上面的补充的那句代码了
另外最好在每次处理按键事件后,将焦点都设置到“=”按钮上,或者窗口上,这样可以避免在按回车键的时候,处理的却不是“=”代码的问题
这样改动一下的话,运行起来效果会更好一点
输入数字部分的代码供参考
private string tempValue = string.Empty;
private void frmMain_Load(object sender, EventArgs e)
{
tempValue = txtResult.Text;
btnEquals.Focus();
}
private void btnNum_Click(object sender, EventArgs e)
{
//数字按钮的名称为btnNum0, btnNum1, btnNum2, ... btnNum8, btnNum9
string val = (sender as Button).Name;
val = val.Substring(val.Length - 1);
ProcessNum(int.Parse(val));
}
private void frmMain_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue >= 48 && e.KeyValue <= 57) //数字小键盘的按键未处理
{
ProcessNum(e.KeyValue - 48);
}
}
private void ProcessNum(int value)
{
if (tempValue == "0")
tempValue = "";
tempValue += value.ToString();
txtResult.Text = tempValue;
btnEquals.Focus();
}
展开全部
将楼上的代码改一下就好了,楼主请看:
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '0')
{
button1_Click(null, null);
e.Handled = true; //这是我加的,必须
}
}
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '0')
{
button1_Click(null, null);
e.Handled = true; //这是我加的,必须
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以让客户端去调用服务器端事件
具体思路如下:
在你使用keypress事件的函数中使用
document.getElementById(这里是你服务器按钮的客户端ID,比如
<%=MyButton.ClientID%>).click();
注意这里的这种写法是必须的
这句话是说,当我触发了JS事件的时候自动调用服务器端ID为MyButton的服务器事件
具体思路如下:
在你使用keypress事件的函数中使用
document.getElementById(这里是你服务器按钮的客户端ID,比如
<%=MyButton.ClientID%>).click();
注意这里的这种写法是必须的
这句话是说,当我触发了JS事件的时候自动调用服务器端ID为MyButton的服务器事件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询