Winform窗体下,AcceptButton已经设置了Button,TextBox仍能接收回车键

原创 2016年07月01日 17:44:38

Form.Acceptbutton已经设置了值,一般情况下,TextBox有焦点时,点击回车键就会触发Form.AcceptButton.Click事件。

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    class FormDemo : Form
    {
        private TextBox textBox1;
        private Button btnExe;
        private Button btnAccept;

        private void InitializeComponent()
        {
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.btnExe = new System.Windows.Forms.Button();
            this.btnAccept = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(12, 12);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(100, 21);
            this.textBox1.TabIndex = 0;
            // 
            // btnExe
            // 
            this.btnExe.Location = new System.Drawing.Point(132, 12);
            this.btnExe.Name = "btnExe";
            this.btnExe.Size = new System.Drawing.Size(88, 23);
            this.btnExe.TabIndex = 1;
            this.btnExe.Text = "Execute";
            this.btnExe.UseVisualStyleBackColor = true;
            this.btnExe.Click += new System.EventHandler(this.btnExe_Click);
            // 
            // btnAccept
            // 
            this.btnAccept.Location = new System.Drawing.Point(132, 41);
            this.btnAccept.Name = "btnAccept";
            this.btnAccept.Size = new System.Drawing.Size(88, 23);
            this.btnAccept.TabIndex = 2;
            this.btnAccept.Text = "AcceptButton";
            this.btnAccept.UseVisualStyleBackColor = true;
            this.btnAccept.Click += new System.EventHandler(this.btnAccept_Click);
            // 
            // FormDemo
            // 
            this.AcceptButton = this.btnAccept;
            this.ClientSize = new System.Drawing.Size(284, 262);
            this.Controls.Add(this.btnAccept);
            this.Controls.Add(this.btnExe);
            this.Controls.Add(this.textBox1);
            this.Name = "FormDemo";
            this.ResumeLayout(false);
            this.PerformLayout();

        }
        public FormDemo()
        {
            InitializeComponent();
        }
        private void btnExe_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Execute按钮点击");
        }

        private void btnAccept_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Accept按钮点击");
        }
    }
}

运行结果如图



但是我们会有这样的需求,我们TextBox数据输入完毕,不想直接执行Form.AcceptButton.Click事件,怎么办?

我们可以利用TextBox.PreviewKeyDown事件。

public FormDemo()
{
    InitializeComponent();
    textBox1.PreviewKeyDown += textBox1_PreviewKeyDown;
}

void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        btnExe.PerformClick();
    }
}

运行结果如图

奇怪两个按钮Click事件都执行了。

但是我们还想屏蔽AcceptButton的Click怎么办?

处理TextBox.PreviewKeyDown:

void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        btnExe.PerformClick();
        e.IsInputKey = true;
    }
}

运行结果如图



好的,我的第一个博文就这样吧。





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#之WinForm基础 点击button关闭当前窗体,用this.close()

镇场诗:慈心积善融学习,技术誓为大家学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 ———————————————————————————————————————————————...

C#之WinForm基础 点击button,显示另外一个窗体

镇场诗:慈心积善融学习,技术誓为大家学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 ———————————————————————————————————————————————...

C#winform设置窗体自动缩放适应不同尺寸的电脑屏幕大小

由于要用winform开发一个桌面安装版考试软件,用户量也比较多, 所以很多用户反映软件的界面经常超出屏幕,部分功能或内容无法显示完整。 软件界面有几个设置大小固定为宽1066, 高718。 我...

winform textbox文本框设置多行输入小技巧总结

对于我们经常要对文本框进行多行输入后进行查询、插入、删除、更新操作等,要很方便的从其他诸如Excel中进行复制粘贴的数据来说,textbox文本框必须设置 为多行属性:Multiline 属性设置为...

Vb.net在窗体上而非textbox控件上捕捉键盘上按下的键

之前一直苦苦纠结怎么实现这个问题,今天无意间发现了 窗体上有 keypriview这个属性 后经过查找相关资料,了解它是用于窗体捕捉键盘上按下的键只要新建一个窗体,将此属性设置为true,便可以...

C#窗体控件简介-文本框控件TextBox

在希望用户输入程序员在设计阶段不知道的文本(如用户的姓名)时,应使用文本框。文本框的主要用途是让用户输入文本,用户可以输入任何字符,也可以限制用户只输入数值。文本框(TextBox)的作用是实现程序与...

winform关于AcceptButton和CanceleButton的问题

1.Form.AcceptButton 属性:取得或设定使用者按下 ENTER 键時所按下的表单上按鈕,指派至这个属性的按鈕必须是在目前表单上或位於目前表單上容器內的IButtonControl(...

小黑小波比.实现button关闭窗体

× 提示
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)