C# 在listview中导入/导出文本

C# 在listview中导入/导出文本,c#,listview,text,openfiledialog,savefiledialog,C#,Listview,Text,Openfiledialog,Savefiledialog,我有两个问题: 1-当我单击“打开”按钮时,它会显示两次打开文件对话框(当我选择我的文件并单击“确定”时,它会再次打开选择窗口,仅重复一次)。 2-我正在尝试从列表视图导出和导入文本文件,到目前为止,我已成功从列表视图导出文本文件,但无法将其导入 以下是我的代码(因为它是同一个项目,所以适用于这两种情况): 公共部分类表单1:表单 { 公共表格1() { 初始化组件(); } 字符串路径; //字符串fname; 私有void abtmenuItem10_单击(对象发送者,事件参数e) { Me

我有两个问题: 1-当我单击“打开”按钮时,它会显示两次打开文件对话框(当我选择我的文件并单击“确定”时,它会再次打开选择窗口,仅重复一次)。 2-我正在尝试从列表视图导出和导入文本文件,到目前为止,我已成功从列表视图导出文本文件,但无法将其导入

以下是我的代码(因为它是同一个项目,所以适用于这两种情况):

公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
字符串路径;
//字符串fname;
私有void abtmenuItem10_单击(对象发送者,事件参数e)
{
MessageBox.Show(“DB Kai UB文本提取器\n由Omarrio 2012编写”,“关于…”,MessageBoxButtons.OK,MessageBoxIcon.Information,MessageBoxDefaultButton.Button1,0,”http://gbatemp.net/user/245642-omarrrio/"); 
}
私有void exitmenuItem4\u单击(对象发送方,事件参数e)
{
这个。关闭();
}
私有void sbtmenuItem5_单击(对象发送方,事件参数e)
{
listView1.Items.Clear();
OpenFileDialog ofd=新建OpenFileDialog();
ofd.Title=“打开Sbt文件”;
ofd.Filter=“Sbt文件(*.Sbt)|*.Sbt |所有文件(*.*)|*.”;
//if(ofd.ShowDialog()==System.Windows.Forms.DialogResult.OK)
}
私有void msgmenuItem6_单击(对象发送者,事件参数e)
{
listView1.Items.Clear();
pntrsmenuItem4.Text=“指针数=”;
OpenFileDialog ofd=新建OpenFileDialog();
ofd.Title=“打开消息文件”;
ofd.InitialDirectory=Application.StartupPath;
ofd.Filter=“Msg文件(*.Msg)|*.Msg |所有文件(*.*)|*.”;
DialogResult结果=ofd.ShowDialog();
if(result==DialogResult.Cancel)
返回;
if(ofd.ShowDialog()==System.Windows.Forms.DialogResult.OK)
{
path=ofd.FileName;
BinaryReader br=新的BinaryReader(File.OpenRead(path),Encoding.GetEncoding(“Shift_JIS”);
br.BaseStream.Position=0x4;
int num_pointers=br.ReadInt16();
if(num_指针==0x56C)
{
MessageBox.Show(“此文件不受支持,因为它的指针系统被某种方式锁定,请使用另一个文件,谢谢。”,“错误”,MessageBoxButtons.OK,MessageBoxIcon.Error);
返回;
}
其他的
{
Show(“文件已成功打开!”,“Info”,MessageBoxButtons.OK,MessageBoxIcon.Information);
pntrsmenuItem4.Visible=true;
pntrsmenuItem4.Text+=num_指针.ToString();
列表偏移量=新列表();
对于(int i=2;i=0)
{
字符串[]a2=sr.ReadLine().Split('-');
如果(a2.Length==2)
{
aa=int.Parse(a2[0].ToString());
listView1.Items[aa]。子项[1]。Text=a2[1]。替换(“~”,“\n”);
}
其他的
{
listView1.Items[aa]。子项[1]。文本+=“\n”+a2[0];
}
}
高级关闭();
}
}

很难看出哪个菜单单击对应于这里的哪个方法,但我猜有问题的代码是msgmenuItem6\u click

对话框显示两次的原因是您调用了ShowDialog两次

DialogResult result = ofd.ShowDialog();
if (result == DialogResult.Cancel)
    return;
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
你应该做什么

if (result == System.Windows.Forms.DialogResult.OK)

关于您无法读取文件的原因。您确定在尝试读取时文件中有数据吗?为了确保正确打开文件,您也可以尝试file.ReadAllText并确保正确读取该文件。

我可以读取数据,但我不能做的是从.txt文件导入文本:|**msgmenuitem**:.msg文件的打开按钮|**Etxtmenuitem**:导出文本按钮|**Itxtmenuitem**:导入文本按钮和thnx我现在只能打开一次对话框:)关于文本文件中的数据,我确定每行都有数据,前缀为“-”,但当我尝试打开它时,它只是将整个文本添加到子项的第一个字符串中。您应该在调试器中逐步查看代码以了解原因。导入文件时,应该很容易在调试器中看到。
if (result == System.Windows.Forms.DialogResult.OK)