OpenFileDialog C#要求打开两次?
我使用Telerik浏览编辑器打开程序中的文件。但出于某种原因,它两次向我索要文件。从下面的代码中,有人能看出原因吗OpenFileDialog C#要求打开两次?,c#,telerik,openfiledialog,C#,Telerik,Openfiledialog,我使用Telerik浏览编辑器打开程序中的文件。但出于某种原因,它两次向我索要文件。从下面的代码中,有人能看出原因吗 private void radBrowseEditor1_ValueChanged(object sender, EventArgs e) { using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.Title
private void radBrowseEditor1_ValueChanged(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Title = @"Open .HRM File";
openFileDialog.InitialDirectory = @"C:\Users\mike\Desktop";
openFileDialog.Filter = @"HRM files (*.hrm)|*.hrm|All files (*.*)|*.*";
openFileDialog.FilterIndex = 2;
openFileDialog.RestoreDirectory = true;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
}
using (StreamReader reader = new StreamReader(openFileDialog.FileName, System.Text.Encoding.Default))
{
HRM.Active.Raw = reader.ReadToEnd();
}
}
}
可能很简单。我很确定我在安装Telerik之前有一个toolstrip时使用的代码,它工作得很好 读完这篇文章后,您似乎甚至不需要为openFileDialog操心。看起来确实应该检查该值是否为空
private void radBrowseEditor1_ValueChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(radBrowseEditor1.Value.ToString()))
{
using (StreamReader reader = new StreamReader(radBrowseEditor1.Value.ToString(), System.Text.Encoding.Default))
{
HRM.Active.Raw = reader.ReadToEnd();
}
}
}
使用调试器,添加断点。ShowDialog()是否调用了两次?可能您调用了两次
radbrowseditor1\u ValueChanged
。或者将其分配给事件处理程序两次。作为对两者的答复,不,我找不到其中任何一个调用了两次。RadBrowseditor 1是单选按钮吗?如果是,是否仅在选中单选按钮时显示对话框?如果是这样的话,那么这个事件的开始应该是检查它。浏览编辑器就像是去文件并打开一样。这不起作用,因为我的代码的其余部分以及它从加载到的文件中计算数据的方式。@user2913240您的原始解决方案是如何工作的,除了对话框窗口打开两次之外?这是顶部的代码,这就是解决方案的工作原理。然后它从txt文件中逐行读取数据,并将其放入datagridview中。与我以前在toolstripmenuItem中使用的代码相同,单击后效果很好。@user2913240是OpenFileDialog的Radbrowseditor1集的DialogType属性吗?如果是这样,我肯定不理解在ValueChanged事件中使用OpenFileDialog代码与不使用它之间的区别。一旦为HRM.Active.Raw分配了reader.ReadToEnd(),它会做什么?是的,我意识到发生了什么,打开文件对话框的代码是不必要的!因为DialogType设置为OpenFile Dialog。但我只是想知道如何在删除filedialog代码时实现同样的streamreader。