-2

http://turcguide.com/stack/nre1.jpg

私の例 mytext[i].text のようなユーザー定義オブジェクトを使用すると、NullReferenceException が発生しますが、設計時のオブジェクトを使用すると、NullReferenceException はありません。

私の例では、以下の行は例外を与えませんが、 IngNbrTxt.Text(desing time object) の代わりに mytext[i].text(run time object) のような配列オブジェクトを配置すると、リンクに示されているように例外が発生しますその上。

string myvar = Convert.ToString(IngNbrTxt.Text);

private void inglist_click(object sender, EventArgs e)
{
    TextBox[] mytext = new TextBox[9];
    int rows = 0;
    Int32.TryParse(IngNbrTxt.Text, out rows);

    if (inglist.SelectedIndex > -1 && this.CommandFrame.Visible == true)
    {
        for (int i = 0; i < rows; ++i)
        {
            //string myvar = (mytext[i].Text != null ? mytext[i].Text.ToString() : (string)null); 
            string myvar = Convert.ToString(IngNbrTxt.Text);
            if (myvar == null)
            {
                mytext[i].Text = Convert.ToString(inglist.Items[inglist.SelectedIndex]);
            }
        }
    }
    else
    {
        return;
    }
}
4

1 に答える 1

1

@BartoszKP のコメントmytext[i]は null であるため、Textnull オブジェクトのプロパティを設定すると例外が発生します。以下を試してください。

 if (myvar == null)
 {
     mytext[i] = new TextBox();
     mytext[i].Text = Convert.ToString(inglist.Items[inglist.SelectedIndex]);
 }

また

TextBox[] mytext =Enumerable.Range(0,8).Select(x=> new TextBox()).ToArray();
于 2013-09-14T18:45:59.383 に答える