2011-12-18 17 views
0

私のプログラムは、「System.NullReferenceException」種類の未処理の例外がWindowsFormsApplication10.exe変更ラベルテキストエラーC#の

で発生しました追加情報この警告

で作業を停止します:インスタンスに設定されていないオブジェクト参照 オブジェクトのここで

は、それが停止したコードです:それはちょうどStatusStripがでラベルを

string stripStatusL = "some text: " + keepValues[lastTaken].ToString(); 
       toolStripStatusLabel1.Text = stripStatusL; 

だ私は、そのラベルのテキストを変更しようとしています。通常、StatusStripなしのラベルで動作します。私の間違いは何ですか?

のVisual Studio 2010の のC#

+4

コードをデバッグしてクイックウォッチを使用して、Nullを返す式を確認してください。 – Tarik

答えて

0

私の最高の推測では、keepValuesnullまたはそのlastTakenインデックス/キーであることだろう(あなたのコードはそれがリストかディクショナリーかを知らない)がコレクションに存在しない。その通常の理由は、フォームデザイナーが初期化時に外部データを渡すことができない可能性があることです。フォームにはDesignModeプロパティがあります。これは、フォームがデザイナーで実行されている場合はtrueで、必要に応じてモックデータを提供するために使用できます。

0

私はkeepValues[lastTaken]がnullだと思いたいです。

だからkeepValues[lastTaken].ToString();はあなたにNullReferenceExceptionを与えます。

私は、デバッガでプログラムをステップ実行する提案、および

+0

'keepValues'自体が' null'の場合はどうなりますか? – kol

+0

はい、それも可能です。 –

0

とNullReferenceExceptionは、インスタンスがnullであることを意味NULLであるオブジェクトをチェックしたいです。 nullインスタンスにアクセスすると、NullReferenceExceptionが発生します。コントロールがnullでないことを確認します。その上にマウスを置いたときにブレークポイントを設定すると、何が間違っているかがわかります。 keepValuesコレクションはlastTakenに等しいキーが含まれていません

0
  1. 、または
  2. keepValues[lastTaken]は存在するが、その値はnullです
+0

3. 'keepValues'自体がnullです。 –

+0

ああ、もちろん! – Strillo

0
string[] keepValues=new string[5]; 
int lastTaken=6; 

string temp=keepValues[lastTaken].ToString(); 

これはそう心の中であなたは、配列から値にアクセスするために使用されている配列とインデックスの長さを保つ例外

An unhandled exception of type 'System.NullReferenceException' occurred in WindowsFormsApplication10.exe 
Additional information: Object reference not set to an instance of an object. 

を作成します。