簡體   English   中英

按鍵模擬按鈕單擊C#

[英]Keypress To Simulate A Button Click in C#

好的,所以我正在制作一個Tic-Tac-Toe游戲來幫助我學習C#。 我正在嘗試向其中添加一些功能,因此我希望人們能夠使用計算機上的NumPad來模擬單擊按鈕。

這是我所擁有的,但是當我使用NumPad時,按鈕沒有單擊。 你們中有人能看到原因嗎?

    //===============================
    // start NumPad Simulate Clicks
    //   NumPad  MyButtons
    //   7 8 9   1 2 3
    //   4 5 6   4 5 6 
    //   1 2 3   7 8 9
    //===============================
    public void myControl_NumPad7(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.NumPad7)
        {
            button1_Click(null, null);
        }
    }
    public void myControl_NumPad8(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.NumPad8)
        {
            button2_Click(null, null);
        }
    }
    public void myControl_NumPad9(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.NumPad9)
        {
            button3_Click(null, null);
        }
    }
    public void myControl_NumPad4(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.NumPad4)
        {
            button4_Click(null, null);
        }
    }
    public void myControl_NumPad5(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.NumPad5)
        {
            button5_Click(null, null);
        }
    }
    public void myControl_NumPad6(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.NumPad6)
        {
            button6_Click(null, null);
        }
    }
    public void myControl_NumPad1(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.NumPad1)
        {
            button7_Click(null, null);
        }
    }
    public void myControl_NumPad2(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.NumPad2)
        {
            button8_Click(null, null);
        }
    }
    public void myControl_NumPad3(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.NumPad3)
        {
            button9_Click(null, null);
        }
    }

編輯
注意我必須清楚我的意思...

從您發布的代碼中,我懷疑您有9個控件添加了按鍵事件。 這些控件僅在重點關注時才會接收鍵事件。

要全局處理表單的鍵,必須將Form.KeyPreview設置為true 另外,我不會像您那樣處理鍵,而是添加一個Form.KeyDown事件並編寫如下內容:

switch (e.KeyCode)
{
    case Keys.NumPad9:
        e.Handled = true;
        button3.PerformClick();
        break;
    case Keys.NumPad8:
        e.Handled = true;
        button2.PerformClick();
        break;
    // And so on
}

這將處理表單中的NumPad-Keys-然后,您可以刪除問題中發布的所有事件處理程序。

要以編程方式“單擊”按鈕,應使用Button.PerformClick()方法,因為可以將多個事件處理程序添加到click事件中,否則將不會調用該事件處理程序。

編輯2
switch -statement的語法無效。 當然,每個“ case”都必須以case關鍵字開頭...現在應該可以使用了。

您需要使用button1.PerformClick(); 對於每個正確調用事件的按鈕,這是info

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM