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;
    }
}

运行结果如图



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





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

winform关于AcceptButton和CanceleButton的问题

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

C#winform设置textbox属性不可编辑

Java Web开发如何设置单选按钮的属性,使得一旦选中某一个单选按钮,就不可编辑单选按钮呢 怎么设置单选按钮的属性,使得一旦选中某一个单选按钮,就不可编辑单选按钮呢? " > VB...
  • tian19870221084
  • tian19870221084
  • 2014年06月03日 21:44
  • 6594

MFC(10)解决回车键 ESC 默认关闭窗口的一般方法

在一般情况下编写的对话框程序,用户在运行的时候,如果不注意按下了ENTER或者ESC键,程序就会立刻退出,之所以会这样,是因为按下Enter键时,Windows就会自动去找输入焦点落在了哪一个按钮上,...
  • luoyouren
  • luoyouren
  • 2015年04月16日 20:34
  • 3176

C#之WinForm基础 textbox控件变高,由单行输入改为多行输入

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 感恩曾经帮助过 心少朴 的人。 ...
  • yushaopu
  • yushaopu
  • 2016年09月17日 11:01
  • 1637

winform窗体中listview内动态添加button按钮

  • 2017年12月08日 16:44
  • 204KB
  • 下载

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

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 form1的布局, 解决方案资源管理器, form1...
  • yushaopu
  • yushaopu
  • 2016年09月17日 09:20
  • 14995

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

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 代码展示, form1.cs using Sys...
  • yushaopu
  • yushaopu
  • 2016年09月17日 09:26
  • 2198

C# 在窗体中按回车键依次变换控件焦点

  • 2012年07月27日 10:40
  • 61KB
  • 下载

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

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

c# winform 窗体起始位置 设置

窗体起始位置为顶部中间,WinForm居中显示: int x = (System.Windows.Forms.SystemInformation.WorkingArea.Width - th...
  • Andrewniu
  • Andrewniu
  • 2017年07月03日 15:38
  • 295
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Winform窗体下,AcceptButton已经设置了Button,TextBox仍能接收回车键
举报原因:
原因补充:

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