6

ある名前のコンポーネントが現在の形式で存在するかどうかを確認する必要があります。文字列変数にコンポーネントの名前があり、存在しない場合は作成する必要があります。私はこのコードを使用します

Control c = Controls.Find(New, true)[0];   //najiti komponenty

        if (c == null) {}

しかし、インデックスが配列の境界外にあるというエラーが発生します。私はこのコードが悪いことを知っています、しかし私はそれをうまく書くことを知りません、そしてグーグルは私を助けません。

4

2 に答える 2

8

Findメソッドは、コントロールの配列を返しControl[]ます。空の配列の最初の要素にアクセスしようとしているため、次のようになりIndexOutOfRangeException ます。

Control[] controls = Controls.Find(New, true); 
if (controls.Length > 0) 
{
    //logic goes here
}
else 
{
    //no components where found
}
于 2013-01-06T14:37:32.243 に答える
7

Control.ContainsKey()メソッドを使用してみてください(私の例では、引用符で囲まれたテキストの代わりに、コントロール名を含む文字列変数を渡します)。

if (!this.Controls.ContainsKey("MyControlName"))
{
    // Do Something
}
于 2013-01-06T14:46:00.497 に答える