c# - 为什么我们可以在没有监听器的情况下在 OpenFileDialog 中获取按下的按钮?

标签 c# winforms events

在 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/

相关文章:

c# - 如何从 SQL Server 加载图像到图片框?

c# - 使用 C# 创建可调整大小的网格以覆盖在图像上

vb.net - DataGridComboBoxColumn 中的选择更改事件

c# - MemoryCache AbsoluteExpiration

c# - 如何使我的 LINQ To SQL 语句动态化?

events - 从下拉列表中选择时触发事件

c# - 阻止代码并等待事件处理程序触发?

events - 舞台调整大小事件 (JavaFX)

c# - 何时使用属性以及何时在内部类上使用内部变量的策略?

C# Azure 函数 ILoggerFactory 不使用引用库进行日志记录