大家我,我想问一下~
现在我把开机启动项从注册表中提取出来了,想放在listView下的3个列里,列已经建立好了,可是信息做循环后只能放在columnHeader1下请问一下知道的朋友,怎么能把索引设置成columnHeader2和columnHeader3?或者用别的方法?谢谢~

解决方案 »

  1.   

    ListView.SubItems[1]//columnHeader2
    ListView.SubItems[2]//columnHeader3
      

  2.   

    ListView.Items[0].SubItems[1];//表示第一行第二列..
      

  3.   

    看一下msdn 
    ListViewItem myitem = new ListViewItem();
    myitem.text ='第一列';
    myitem.subitems.add('第二列');
    myitem.subitems.add('第三列');
    ListView1.Items.add(myitem);
      

  4.   

    还是不行..我的代码如下:
    private void Form1_Load(object sender, EventArgs e)
            {
                RegistryKey myRK = Registry.LocalMachine.OpenSubKey("SOFTWARE");
                RegistryKey myRKMfr = myRK.OpenSubKey("Microsoft");
                RegistryKey myRKwin = myRKMfr.OpenSubKey("Windows");
                RegistryKey myRKCv = myRKwin.OpenSubKey("CurrentVersion");
                RegistryKey myRKRun = myRKCv.OpenSubKey("Run");
                int a = 0;
                foreach (string site in myRKRun.GetValueNames())
                //开始遍历由子键名称组成的字符串数组 
                {
                    this.listView1.Items.Add(site);
                    ListViewItem myitem = new ListViewItem();
                    this.listView1.Items[a].SubItems[0].Text = site;
                    this.listView1.Items[a].SubItems[1].Text = myRKRun.GetValue(site).ToString();
                    this.listView1.Items[a].SubItems[2].Text = myRKRun.GetValueKind(site).ToString();
                    ++a;
           //         this.listView1.Items.Add(myRKRun.GetValueKind(site).ToString());
           //         this.listView1.Items.Add(myRKRun.GetValue(site).ToString());
                }
                MessageBox.Show("共有"+a.ToString()+"个启动项");
            }
    问题出在this.listView1.Items[a].SubItems[1].Text = myRKRun.GetValue(site).ToString();和this.listView1.Items[a].SubItems[2].Text = myRKRun.GetValueKind(site).ToString();
      

  5.   

    这样试试:
    this.listView1.Items[a].SubItems.Add(myRKRun.GetValue(site).ToString());
    this.listView1.Items[a].SubItems.Add(myRKRun.GetValueKind(site).ToString());
      

  6.   

    我操....行了...
    楼上的大哥.能不能讲讲怎么回事啊....
    我弄一下午了..
    this.listView1.Items[a].SubItems[1].Text = myRKRun.GetValue(site).ToString();
    我这是指定第一行的第2列呀...为什么不用指定第2列呢?
      

  7.   

    你的子项都没有创建怎么能用呢?没有创建又怎么会有SubItems[1]...呢?呵呵..
      

  8.   

    你用Add方法添加子项后,以后再用就行了,因为添加后SubItems[1]...也就都存在了...
      

  9.   


    明白了.....刚开始跟items和列弄糊涂了..哈哈
    谢谢了
    送分!
      

  10.   

    this.listView1.Items[a].SubItems.Add(myRKRun.GetValue(site).ToString());
    this.listView1.Items[a].SubItems.Add(myRKRun.GetValueKind(site).ToString());
    这种办法,它会自己找下一列?
      

  11.   

    记住这个只是说在SubItems不存在的情况下,如果本来就有的话,那就直接选用索引就行了,也就是你原来的方法...
      

  12.   

    用Add方法添加子项
    这个项得是个字符吗?就是我的列名?如果是多个列,那么就要写出多个列名参数?
      

  13.   

    我明白你的意思~呵呵
    现在有点不明白add的意思....
    我也在MSDN上找过,确实没有结实合适我的问题
    还得麻烦您说一下
      

  14.   

    liujia_0421() 我还在刚那个小程序里已经有SubItems项了.可是用刚才的方法也不OK