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了! 虽然很笨,但是却能在我现在所用的代码的基础上实现利
展开
 我来答
jackyc23
2010-07-17 · TA获得超过523个赞
知道小有建树答主
回答量:376
采纳率:0%
帮助的人:393万
展开全部
呵呵 是做计算器的程序吗?假设是按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();
}
私找6
2010-07-16 · 超过32用户采纳过TA的回答
知道答主
回答量:98
采纳率:0%
帮助的人:85.1万
展开全部
将楼上的代码改一下就好了,楼主请看:
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '0')
{
button1_Click(null, null);
e.Handled = true; //这是我加的,必须
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
绮绮宝妈
2010-07-17 · TA获得超过343个赞
知道小有建树答主
回答量:415
采纳率:0%
帮助的人:242万
展开全部
可以让客户端去调用服务器端事件
具体思路如下:
在你使用keypress事件的函数中使用
document.getElementById(这里是你服务器按钮的客户端ID,比如
<%=MyButton.ClientID%>).click();
注意这里的这种写法是必须的
这句话是说,当我触发了JS事件的时候自动调用服务器端ID为MyButton的服务器事件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式