小小小纯洁 2019-04-09 00:44 采纳率: 100%
浏览 860
已采纳

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());
                }
            }


        }
    }
}
  • 写回答

2条回答 默认 最新

  • 小小小纯洁 2019-05-04 20:46
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况