ListView控件,为什么我执行代码后,form1的窗体是白的?
C#入门经典(第4版).我将书上所有的步骤全部做好了,代码也调试好了.为什么执行后窗体还是一片空白?我的5个radioButton、1个Button、1个ListView、1个label控件在窗体上一无所有,而书上显示了具体的控件,请高手指点一下,具体代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;namespace ListView
{
     partial class Form1 : Form
    {
        //Member field to hold previous folders
         private System.Collections.Specialized.StringCollection folderCol;
       
       
        
        private void CreateHeadersAndFillListView()
        {
            ColumnHeader colHead;
            //First header
            colHead = new ColumnHeader();
            colHead.Text = "Filename";
            this.listViewFilesAndFolder.Columns.Add(colHead);            //Second header
            colHead = new ColumnHeader();
            colHead.Text = "Size";
            this.listViewFilesAndFolder.Columns.Add(colHead);            //Third header
            colHead = new ColumnHeader();
            colHead.Text = "Last accessed";
            this.listViewFilesAndFolder.Columns.Add(colHead);
        }
        private void radioButtonLargeIcon_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            if (rdb.Checked)
                this.listViewFilesAndFolder.View = View.LargeIcon;        }        private void radioButtonSmallIcon_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            if (rdb.Checked)
                this.listViewFilesAndFolder.View = View.SmallIcon;        }        private void radioButtonList_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            if (rdb.Checked)
                this.listViewFilesAndFolder.View = View.List;        }        private void radioButtonDetails_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            if (rdb.Checked)
                this.listViewFilesAndFolder.View = View.Details;        }        private void radioButtonTile_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            if (rdb.Checked)
                this.listViewFilesAndFolder.View = View.Tile;        }        private void Form1_Load(object sender, EventArgs e)
        {
            InitializeComponent();
            folderCol = new System.Collections.Specialized.StringCollection();
            CreateHeadersAndFillListView();
            PaintListView(@"C:\");
            folderCol.Add(@"C:\");
        }        private void listViewFilesAndFolder_ItemActivate(object sender, EventArgs e)
        {
            System.Windows.Forms.ListView lw = (System.Windows.Forms.ListView)sender;
            string filename = lw.SelectedItems[0].Tag.ToString();            if (lw.SelectedItems[0].ImageIndex != 0)
            {
                try
                {
                    System.Diagnostics.Process.Start(filename);
                }
                catch
                {
                    return;
                }
            }
            else
            {
                PaintListView(filename);
                folderCol.Add(filename);
            }        }
       
        private void labelCurrentPath1_Click(object sender, EventArgs e)
        {        }
        private void buttonBack_Click(object sender, EventArgs e)
        {
            if (folderCol.Count > 1)
            {
                PaintListView(folderCol[folderCol.Count - 2].ToString());
                folderCol.RemoveAt(folderCol.Count - 1);
            }
            else
            {
                PaintListView(folderCol[0].ToString());
            }
        }
        private void PaintListView(string root)
        {
            try
            {
               //Two local variables that is used to create the items to insert
                ListViewItem lvi;
                ListViewItem.ListViewSubItem lvsi;               //If there's no root folder,we can't insert anything
                if(root.CompareTo("")==0)
                    return;                DirectoryInfo dir=new DirectoryInfo(root);
                DirectoryInfo[] dirs=dir.GetDirectories();
                FileInfo[] files=dir.GetFiles();                this.listViewFilesAndFolder.Items.Clear();                this.labelCurrentPath1.Text=root;                this.listViewFilesAndFolder.BeginUpdate();                foreach(System.IO.DirectoryInfo di in dirs)
                {
                    lvi=new ListViewItem();
                    lvi.Text=di.Name;
                    lvi.ImageIndex=0;
                    lvi.Tag=di.FullName;                    lvsi=new ListViewItem.ListViewSubItem();
                    lvsi.Text="";
                    lvi.SubItems.Add(lvsi);                    lvsi=new ListViewItem.ListViewSubItem();
                    lvsi.Text=di.LastAccessTime.ToString();
                    lvi.SubItems.Add(lvsi);                    this.listViewFilesAndFolder.Items.Add(lvi);
                }                foreach(FileInfo fi in files)
                {
                    lvi=new ListViewItem();
                    lvi.Text=fi.Name;
                    lvi.ImageIndex=1;
                    lvi.Tag=fi.FullName;                    lvsi=new ListViewItem.ListViewSubItem();
                    lvsi.Text=fi.Length.ToString();
                    lvi.SubItems.Add(lvsi);                    lvsi=new ListViewItem.ListViewSubItem();
                    lvsi.Text=fi.LastAccessTime.ToString();
                    lvi.SubItems.Add(lvsi);                    this.listViewFilesAndFolder.Items.Add(lvi);
                }
                    this.listViewFilesAndFolder.EndUpdate();
                }
                catch(System.Exception err)
                {
                    MessageBox.Show("Error:" +err.Message);
                }
        }        private void listViewFilesAndFolder_SelectedIndexChanged(object sender, EventArgs e)
        {        }        //Init ListView and folder collection       
        }
           
    }

解决方案 »

  1.   

    你的form里的listView是listViewFilesAndFolder?
      

  2.   

      应该是这样的:我将Form上的listView控件的name属性改为了listViewFilesAndFolder
      

  3.   

    如果他的name是listView,你的程序里根本就没有操作listView的代码..
      

  4.   

    我只用了你的部分代码,有内容显示啊。using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;namespace WindowsApplication2
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
               folderCol = new System.Collections.Specialized.StringCollection();
                CreateHeadersAndFillListView();
                PaintListView(@"C:\");
              //  folderCol.Add(@"C:\");           
            }
            private void CreateHeadersAndFillListView()
            {
                ColumnHeader colHead;
                //First header
                colHead = new ColumnHeader();
                colHead.Text = "Filename";
                this.listViewFilesAndFolder.Columns.Add(colHead);            //Second header
                colHead = new ColumnHeader();
                colHead.Text = "Size";
                this.listViewFilesAndFolder.Columns.Add(colHead);            //Third header
                colHead = new ColumnHeader();
                colHead.Text = "Last accessed";
                this.listViewFilesAndFolder.Columns.Add(colHead);        }
            private System.Collections.Specialized.StringCollection folderCol; 
            private void PaintListView(string root)
            {
                try
                {
                    //Two local variables that is used to create the items to insert
                    ListViewItem lvi;
                    ListViewItem.ListViewSubItem lvsi;                //If there's no root folder,we can't insert anything
                    if (root.CompareTo("") == 0)
                        return;                DirectoryInfo dir = new DirectoryInfo(root);
                    DirectoryInfo[] dirs = dir.GetDirectories();
                    FileInfo[] files = dir.GetFiles();                this.listViewFilesAndFolder.Items.Clear();                //this.labelCurrentPath1.Text = root;               // this.listViewFilesAndFolder.BeginUpdate();                foreach (System.IO.DirectoryInfo di in dirs)
                    {
                        lvi = new ListViewItem();
                        lvi.Text = di.Name;
                        lvi.ImageIndex = 0;
                        lvi.Tag = di.FullName;                    lvsi = new ListViewItem.ListViewSubItem();
                        lvsi.Text = "";
                        lvi.SubItems.Add(lvsi);                    lvsi = new ListViewItem.ListViewSubItem();
                        lvsi.Text = di.LastAccessTime.ToString();
                        lvi.SubItems.Add(lvsi);                    this.listViewFilesAndFolder.Items.Add(lvi);
                    }                foreach (FileInfo fi in files)
                    {
                        lvi = new ListViewItem();
                        lvi.Text = fi.Name;
                        lvi.ImageIndex = 1;
                        lvi.Tag = fi.FullName;                    lvsi = new ListViewItem.ListViewSubItem();
                        lvsi.Text = fi.Length.ToString();
                        lvi.SubItems.Add(lvsi);                    lvsi = new ListViewItem.ListViewSubItem();
                        lvsi.Text = fi.LastAccessTime.ToString();
                        lvi.SubItems.Add(lvsi);                    this.listViewFilesAndFolder.Items.Add(lvi);
                    }
                   // this.listViewFilesAndFolder.EndUpdate();
                }
                catch (System.Exception err)
                {
                    MessageBox.Show("Error:" + err.Message);
                }
            }      
           
        }
    }
      

  5.   

    把private void Form1_Load(object sender, EventArgs e)
            {
                InitializeComponent();
                folderCol = new System.Collections.Specialized.StringCollection();
                CreateHeadersAndFillListView();
                PaintListView(@"C:\");
                folderCol.Add(@"C:\");
            } 红色标记的去掉,就ok了。