为什么文本框点击事件未触发

Si8*_*Si8 1 c# events winforms

我有一个文本框,它是只读的.当我点击我希望它来调用我的按钮点击事件:

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

单击文本框时,没有任何反应.我如何解决它?

更新:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我点击浏览按钮并选择一个文件时,浏览文件窗口再次出现.所以现在它出现了两次,文本框点击仍然不起作用.

irr*_*eal 6

没有理由可以从您提供的信息中推断出为什么在单击tbFile控件时不应该触发openFile()方法.

将文本框设置为只读的事实不会阻止它以任何方式引发click事件.

唯一的可能性是该方法未分配给控件的click事件.

确保在控件的事件属性中确实将click事件分配给"tbFile_Click"方法.

只是因为存在一个被称为与控件相同但添加了"_Click"的方法并不会使它被执行,除非您明确告诉c#您想要将该方法与控件的click事件相关联.

通过事件窗口分配方法时,C#会在后台生成一个代码文件,用于将回调添加到该特定事件.