【发布时间】:2014-04-01 10:10:27
【问题描述】:
我有以下代码,但在 ofd.ShowDialog() 上仍然遇到“对话框必须由用户启动”异常;
private void btnOpen_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = ALLOWED_FILE_TYPES;
ofd.FilterIndex = 1;
ofd.Multiselect = false;
bool? userClickedOK = ofd.ShowDialog();
if (userClickedOK == true)
{.....}
}
来自 MSDN:
此外,在用户启动对话框和显示对话框之间允许的时间有限制。如果超过这些动作之间的时间限制,就会发生异常。
我看不到点击事件后的几行是如何占用这个时间限制的。
关于如何避免这种情况的任何建议?
谢谢
【问题讨论】:
-
我不明白你为什么要将
ShowDialog()结果分配给一个可以为空的布尔类型对象,然后对照true进行检查。 -
按照网上找到的一些教程,例如在silverlightshow.net/items/… 中完成的,不要认为这是导致问题的原因,因为我只是将其更改为 if(ofd.ShowDialog() == true) 并得到了同样的例外
-
以上应该是
ofd.ShowDialog().Value == true..虽然结果相同。 -
你是直接从按钮点击事件中调用
btnOpen_Click吗? -
是的,它在控件的加载事件中使用
this.btnOpen.Click += new RoutedEventHandler(btnOpen_Click);绑定到点击
标签: c# silverlight openfiledialog