gpt4 book ai didi

c# - 文本框未激活表单接受按钮

转载 作者:太空宇宙 更新时间:2023-11-03 21:13:23 26 4
gpt4 key购买 nike

我有一个 Form,它有一个 TextBox 和一个 Button。我已将 Form 的 AcceptButton 属性设置为我的 Button,并将 TextBox 的 AcceptsReturn 属性设置为 false:

class Window : Form
{
private TextBox textBox1;
private Button btn;
public Window()
{
this.Size = new Size(200, 200);
this.AcceptButton = this.btn;

textBox1 = new TextBox();
textBox1.Location = new Point(10, 10);
textBox1.Width = 50;
textBox1.AcceptsReturn = false;
this.Controls.Add(textBox1);

btn = new Button();
btn.Text = "Test";
btn.Location = new Point(textBox1.Right + 10, 10);
btn.Click += btn_Click;
this.Controls.Add(btn);
}

void btn_Click(object sender, EventArgs e)
{
MessageBox.Show("Works");
}
}

class Program
{
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.Run(new Window());
}
}

但是,当在 TextBox 具有焦点的情况下按 Enter 键时,不会激活窗体的 AcceptButton。我使用 TextBox 的 KeyDown 事件解决了这个问题,如下所示:

textBox1.KeyDown += (s,e) => { if (e.KeyCode == Keys.Enter) btn.PerformClick(); } ;

虽然它有效,但我很好奇为什么使用 AcceptButton 属性的早期方法会失败。

最佳答案

问题是您在实例化表单之前将表单的 AcceptButton 设置为 btn。将 this.AcceptButton = this.btn; 移动到 btn = new Button(); 之后的任何行.. btn 指向空引用直到 new Button()。实例化 btn 后,您可以使用它来设置 AcceptButton

关于c# - 文本框未激活表单接受按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36142481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com