C# ListView 详细信息视图空白

winform
运行程序后Listview有数据,但是切换到详细信息视图就空白了,其他视图全都正常,不知道是什么原因?
数据全都没问题的

链接:https://pan.baidu.com/s/1fR4isB2wspIO7ybBTxSwjw
提取码:lno6
项目我放在了百度, 各位大佬帮我看一下

namespace BookMarksMessages
{
    public partial class Root : Form
    {
        public Root()
        {
            InitializeComponent();

            TreeNode treeNode1 = new TreeNode("根目录");
            treeNode1.Text = "根目录";
            Directory.Nodes.AddRange(new TreeNode[] {
            treeNode1});

            //BookMarksList.GridLines = true;//显示行与行之间的分隔线
            //BookMarksList.FullRowSelect = true;//要选择就是一行
        }

        private void Under_Development_Click(object sender, EventArgs e)
        {
            MessageBox.Show("此功能正在开发中...\n敬请期待","开发中...",0);

        }

        private void List_Switch(object sender, EventArgs e)
        {
            string view = (sender as ToolStripMenuItem).Name.ToString();
            this.BookMarksList.View = (View)Enum.Parse(typeof(View), view);
        }

        private void ExportToHTML_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFile = new SaveFileDialog();
            saveFile.Filter = "所有文件(*.*)|*.*|HTML文件(*.html)|*.html";
            //保存时为之前的目录
            saveFile.RestoreDirectory = true;
            //保存文件对话框的默认保存类型,默认索引从1开始
            saveFile.FilterIndex = 2;
            if (saveFile.ShowDialog() == DialogResult.OK) {
                try
                {
                    FileStream file = new FileStream(saveFile.FileName,FileMode.Create,FileAccess.Write,FileShare.Write);
                    string str = "测试文本";
                    //字符串转byte[]
                    byte[] bytes = new UTF8Encoding(true).GetBytes(str);
                    //写入字符串
                    file.Write(bytes, 0, bytes.Length);
                    file.Close();
                    MessageBox.Show("保存成功!");
                }
                catch (Exception ex) {
                    MessageBox.Show("文件保存错误:\n" + ex);
                }
            }

        }

        private void ImportFromHTML_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();
            //设定只能打开HTML文件,文件类型不用加()不然会出错
            openFile.Filter = "HTML文件(*.html)|*.html";
            //打开时为之前的目录
            openFile.RestoreDirectory = true;
            if (openFile.ShowDialog() == DialogResult.OK) {
                try
                {
                    //打开文件,参数列表: 文件名,打开模式,打开权限,其他可以访问此文件的权限
                    FileStream file = File.Open(openFile.FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                    //创建读取文件流实例,参数为: 已打开的文件流,编码方式,一般为默认(操作系统当前的编码)
                    StreamReader sr = new StreamReader(file, Encoding.Default);
                    //读取文件并保存到str字符串
                    string str = sr.ReadToEnd();
                    HtmlWeb htmlWeb = new HtmlWeb();
                    HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
                    //document.Text获取内容
                    document.LoadHtml(str);
                    //分别用xpath和正则获取内容

                    //练习
                    #region 正则
                    //Regex reg = new Regex("HREF=\"([^\"]+)\"");
                    //MatchCollection result = reg.Matches(document.Text);
                    //string href = "";
                    //foreach (Match m in result)
                    //{
                    //  reg = new Regex("\".+\"");
                    //  Match a = reg.Match(m.ToString());
                    //  href = href + a.ToString() + Environment.NewLine;
                    //}
                    //reg = new Regex("[^\"]+");
                    //result = reg.Matches(href);
                    //string href1 = "";
                    //foreach (Match m in result) {
                    //  href1 = href1 + m.ToString() + Environment.NewLine;
                    //}
                    #endregion 

                    #region xpath
                    HtmlNodeCollection htmlNodes = document.DocumentNode.SelectNodes("//a[@href]");
                    if (htmlNodes != null) {
                        BookMarksList.Clear();
                        foreach (HtmlNode n in htmlNodes) {
                            HtmlAttribute hrefAtt = n.Attributes["href"];
                            ListViewItem item = new ListViewItem(new string[] {
                                n.InnerText.Trim(),
                                hrefAtt.Value
                            });
                            BookMarksList.Items.Add(item);
                        }
                    }
                    #endregion
                    //关闭读取文件流
                    sr.Close();
                    //关闭打开文件流
                    file.Close();
                }
                catch (Exception ex){//错误处理
                    MessageBox.Show("文件打开错误:\n"+ex.ToString());
                }
            }


        }
    }
}
c#

2个回答

解决了,列表头要添加完数据后手动添加

ListViewItem item = new ListViewItem(new string[] {
n.InnerText.Trim(),
hrefAtt.Value
});

这里调试下,有没有值

还有 listviewcolumns的列有没有设置,没有列的话,也是空白

u013672715
小小小纯洁 我把项目放在了百度,你可以看一下, 链接:https://pan.baidu.com/s/1fR4isB2wspIO7ybBTxSwjw 提取码:lno6
7 个月之前 回复
u013672715
小小小纯洁 我在这里用messagebox输出的时候是有值的,表头也加了,百度的解决方案前两页都看过了,没有任何作用
7 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!