0

WinForms/VS2010 c# を使用して、12 列と 8 行のリストビューを作成しています。以下は、WinForms の自動コード化されたファイルのスニペットです。

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
        this.listView1 = new System.Windows.Forms.ListView();
       .....
    } 

次に、Form1.cs ファイルには、次のメソッドがあります。

    // in my form1.cs file
    public void listView1_Populate()
    {
        var columnIndex = listView1.Columns[2].Index;
        int counter = 0;

        foreach (ListViewItem item in listView1.Items)
        {
             if (item.SubItems[columnIndex].Text == "2")
             {
                 counter += 100;
                 item.SubItems[columnIndex].Text = counter.ToString(); 
             }
        }
    }

しかしObject reference not set to an instance of an object、コードが次の行に到達すると例外が発生します。 var columnIndex = listView1.Columns[2].Index;

私は何を間違っていますか (54 歳で c# を学ぼうとする以外に!)?

4

1 に答える 1

0

あなたの質問からは、null 参照とは明確ではありません。しかし、この行の前に次の行を追加するvar columnIndex = listView1.Columns[2].Index;と、何がうまくいかないのかをより明確に理解できるかもしれません。

if (listView1 == null)
    throw new Exception("listView1 is null");
if (listView1.Columns == null)
    throw new Exception("Columns is null");
if (listView1.Columns.Length < 3)
    throw new Exception("Columns length is out of range");
于 2012-07-09T21:56:31.417 に答える