在 C# 中我们可以这样做:
OpenFileDialog dlg = new OpenFileDialog();
if (dlg.ShowDialog() == DialogResult.OK)
{
pbxPhoto.Image = new Bitmap(dlg.OpenFile());
}
但为什么我们可以在没有监听器的情况下找出按下的按钮?程序流是否在“if”子句之前停止,直到打开文件对话框关闭?
最佳答案
OpenFileDialog
类的ShowDialog()
方法在内部处理按钮点击事件,然后返回一个DialogResult
返回类型指示按钮被按下。 (所以是的,该方法是同步调用的,因此在对话框返回之前流经您的调用方法确实会停止。)。
如果您编写自己的模态对话框类(或用户控件),您可以模仿这种行为,在该类中您在对话框类内部处理按钮单击事件,然后提供一个枚举结果来封装对话框。
作为替代方案,您可以将自己的处理程序添加到 FileOk事件,但根据 Justin 的回答,使用非模态 Show()
可能更有意义。
关于c# - 为什么我们可以在没有监听器的情况下在 OpenFileDialog 中获取按下的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11967576/