首页 > 代码库 > winform关于AcceptButton和CanceleButton的问题

winform关于AcceptButton和CanceleButton的问题

技术分享技术分享

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

private void Form1_Load(object sender, EventArgs e)
{
    this.AcceptButton = this.button2;
    this.CancelButton = this.button3;
}

詳細看MSDN

這個屬性允許您指定當使用者在應用程式中按下 ENTER 鍵時所發生的預設動作。指派至這個屬性的按鈕必須是在目前表單上或位於目前表單上容器內的 IButtonControl

您可以使用這個屬性允許使用者在完成時輕易地按下 ENTER 鍵,代替用滑鼠手動地按一下接受按鈕,好讓他們能夠快速地巡覽簡單表單。

如果目前在表單上選取的控制項會攔截 ENTER 鍵並作處理,則不可以啟動接受按鈕。例如,當選取它以插入新行字元 (New Line Character) 至控制項中時,多行文字方塊控制項允許按下 ENTER 鍵。

 

想像一下如果使用者在 textBox 填好資料後,不用滑鼠,按 Enter 就能執行下一步的動作,是不是蠻方便的。

2.Form.CancelButton 屬性:取得或設定使用者按下 ESC 鍵時所按下的按鈕控制項。

3.Form.AcceptButton 屬性 :就是在抓你按下Enter鍵後,所要執行的按鈕事件,經我實測發現這鬼東西在Form上的焦點要在非按鈕上才有用喔!搭配 Focus方法 彈性又更大了。

4.Form.CancelButton 屬性:不受控制項的Focus影響,不管在哪按ESC都能很正常的工作。
5.範例如下:
static int j=1;
static int i=1;
static int k = 1;
private void Form1_Load(object sender, EventArgs e)
{
    this.AcceptButton = this.button1;
    this.textBox1.Focus();
    this.textBox1.Select();
    this.CancelButton = this.button3;
} 

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = "按下了 button1: " +j.ToString()+" 次";
    this.textBox2.Focus();
    //this.textBox2.Select();
    j++;
    this.AcceptButton = this.button2;
} 

private void button2_Click(object sender, EventArgs e)
{
    textBox2.Text = "按下了 button2: " +i.ToString()+" 次";
    this.textBox1.Focus();
    //this.textBox1.Select();
    i++;
    this.AcceptButton = this.button1;
}
private void button3_Click(object sender, EventArgs e)
{
    textBox3.Text = "按下了 ESC: " + k.ToString() + " 次";
    k++;
}
改变自博主:
http://www.dotblogs.com.tw/yc421206/archive/2009/07/28/9710.aspx

winform关于AcceptButton和CanceleButton的问题