繁体   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