簡體   English   中英

為什么文本框單擊事件不觸發

[英]Why textbox click event not firing

我有一個文本框,它是只讀的。 當我單擊時,我希望它調用我的按鈕單擊事件:

private void tbFile_Click(object sender, EventArgs e)
{
    //btnBrowse_Click(sender, e);
    MessageBox.Show("test");
}

當單擊文本框時,沒有任何反應。 我如何解決它?

更新:

private void btnBrowse_Click(object sender, EventArgs e)
{
    openFile();
}

private void tbFile_Click(object sender, EventArgs e)
{
    //btnBrowse_Click(sender, e);
    if (tbFile.Text != "")
    {
        openFile();
    }
}

public void openFile()
{
    var FD = new System.Windows.Forms.OpenFileDialog();
    FD.Filter = "DBF Files|*.DBF";
    FD.InitialDirectory = @"C:\";

    if (FD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        string fileToOpen = FD.FileName;
        tbFile.Text = fileToOpen;
    }
}

當我點擊瀏覽按鈕並選擇一個文件時,瀏覽文件窗口再次出現。 因此它現在出現兩次,並且文本框單擊仍然不起作用。

從您提供的信息沒有理由可以推斷,當您單擊tbFile控件時,為什么不應該觸發openFile()方法。

文本框設置為只讀的事實並不能阻止它以任何方式引發click事件。

唯一的可能性是該方法未分配給控件的click事件。

確保控件的事件屬性中確實將單擊事件分配給了“ tbFile_Click”方法。

僅僅因為存在一個與控件相同的方法,但是添加了“ _Click”並不能使其執行,除非您特別告訴c#您想將該方法與控件的click事件關聯。

通過事件窗口分配方法時,C#在后台生成一個代碼文件,該代碼文件將回調添加到該特定事件。

您應該使用btnBrowse.PerformClick()方法來模擬用戶點擊,而不是調用處理程序。

我從VS 2013獲得的默認設置是“ MouseClick”功能,因此可以正常工作:

    private void btnBrowse_Click(object sender, EventArgs e)
    {     
        MyAwesomeFunction(sender);
    }

    private void tbFile_MouseClick(object sender, MouseEventArgs e)
    {     
        MyAwesomeFunction(sender);
    }

    private void MyAwesomeFunction(object sender)
    {
        MessageBox.Show("test");
    }

暫無
暫無

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

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