2016-09-29 10 views
0

私はVisual Studioのドロップダウンボックスに値を入力しようとしていますが、私はいくつかの重要な点を見逃しています。既存のコンボボックスに文字列配列を追加

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     GetPortOptions(); 
     InitializeComponent(); 
    }    

    private void GetPortOptions() 
    { 
     string[] comPorts = SerialPort.GetPortNames(); 
     foreach (string com in comPorts) 
      cComPort.Items.Add(com); 
    } 
    private void btnDisconnect_Click(object sender, EventArgs e) 
    { 
     SerDisconnect(); 
    } 
    private void BtnConnect_Click(object sender, EventArgs e) 
    { 
     SerConnect(); 
    } 
} 

cComPortは、私は、Visual Studioのツールボックスを使用して作成したコンボボックスですが、私が作成したコンボボックスとどのようにリンクをこのコードに混乱してイム。 「System.NullReferenceException」種類の

未処理の例外がSerial_Monitor.exe
で発生しました追加情報:オブジェクトのインスタンスに設定されていないオブジェクト参照。

問題は、それは例外が言っ取得されています

+0

はまた、すべてのコード – Tester

+0

、いただきましたが、正確に問題を示してコンボボックスのパラメータの型を追加しますか? – Mafii

+0

私はコードを表示したくないのですが、そのほとんどは関数を実装していませんが、クラス内のコードを追加しました – Claudi

答えて

3

関数の実行順序の問題は、InitializeComponentメソッドはコントロールを初期化することであり、これはWindowsアプリケーションの他の関数の前に必ず最初に実行する必要があります。

+1

これは理にかなっています。私のロジックは、私の機能が初期化されていると考えて別の方向に変わっていましたが、なぜコンポーネントが最初に動かなければならないのかがわかります。 – Claudi

0

あなたのコードにいくつかの重要な点を混乱させているような気持ち。 このコードではない問題 あなたがこの機能を再利用したい場合は、あなたがより良い

private void GetPortOptions(ComboBox cb) 
{ 
    cb.Item.clear(); 
    string[] comPorts = SerialPort.GetPortNames(); 
    foreach (string com in comPorts) 
    cb.Items.Add(com); 
} 
関連する問題