Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenFileDialog C#要求打开两次?_C#_Telerik_Openfiledialog - Fatal编程技术网

OpenFileDialog C#要求打开两次?

OpenFileDialog C#要求打开两次?,c#,telerik,openfiledialog,C#,Telerik,Openfiledialog,我使用Telerik浏览编辑器打开程序中的文件。但出于某种原因,它两次向我索要文件。从下面的代码中,有人能看出原因吗 private void radBrowseEditor1_ValueChanged(object sender, EventArgs e) { using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.Title

我使用Telerik浏览编辑器打开程序中的文件。但出于某种原因,它两次向我索要文件。从下面的代码中,有人能看出原因吗

   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。