2011-12-14 8 views
3

私の現在のプロジェクトでは、フォーム1の編集ボタンをクリックすると、フォーム2からコンボボックスを無効にする必要があります。フォーム2にあるコンボボックスを無効にする方法は、フォームの外側にあるオブジェクトを使用する

フォーム1.私は、しかし、私は「名前 『IDComboBox4』は現在のコンテキスト内に存在しない」を取得し、

を言うエラーフォーム1に

IDComboBox4.Enabled = false; 

を試してみました。

更新:

しかし私は、悲しいことに、どちらも働いていないの両方の答えを試みました。今、私は構文エラー

を取得するコードをForm1の中

しようとしてコード

dlgForm.ComboBox4Enabled = false; 

「オブジェクト参照が非静的フィールド、メソッド、またはプロパティのために必要とされます」

public bool ComboBox4Enabled 
    { 
     get 
     { 
      return IDComboBox4.Enabled; 
     } 
     set 
     { 
      IDComboBox4.Enabled = value; 
     } 
    } 

もdlgFormである。基本的なことを見落としているような気がしますが、今のところ私の指を置いてはいけません。私のコードの一部を私に教えてもらいたいのであれば。どんな助けもありがとうございます。再度、感謝します。

+1

なぜ誰かがこの質問に投票しましたか?それは完全に合理的です。あなたの問題が何であるかを少なくとも明記してください! –

答えて

3

あなただけIDComboBox4を公開すると、あなたが好きならform2.IDComboBox4.Enabled = false;を使用することを私は強くあなたが作成することをお勧めフォーム2の内部にアクセスせずに行うことができるフォーム2のプロパティ。このようなもの:

public bool ComboBox4Enabled{ 
    get{return IDComboBox4.Enabled;} 
    set{IDComboBox4.Enabled = value;} 
} 

form2.ComboBox4Enabled = false;を使用して設定します。

あなたはそれに慣れていますが、実際に来ている次の開発者にとってはコンボボックスなどの名前を変更する必要があります。 _cbbJobTitleまたは何か。

+0

+1操作を抽象化しました。 –

+0

+1を「公開」にしないでください。 – Otiel

+0

これは本当に正しい方法です。とにかくそのコンボボックスを無効にするときに必要となる他の操作が、プロパティでも実行できる可能性があります。おそらく同時に複数のものを間違って設定したり、ラベルを変更したりする必要があります。 –

3

注:これは一つのボタンのためにあなたはそれがプライベートからパブリック・プロパティと変更「修飾子」プロパティだに行き、デザイナーにあなたのボタンを選択し

をコンボボックスに変更することができます例です。

alt text http://xmages.net/out.php/i170429_1.png

は、その後、あなたは、このような何か別のクラスからのそれへのアクセスを取得することができます:

public static class Test 
{ 
    public static void DisalbeMyButton() 
    { 
     var form = Form.ActiveForm as Form1; 

     if (form != null) 
     { 
      form.MyButton.Enabled = false; 
     } 
    } 
} 
+0

そして、変更は* Form.Designer.cs *ファイルに表示されます。 – Otiel

+0

@Otielそれはdesigner.csファイルに表示されるはずです –

+0

それは私のポイントです。正確にコメントしていただけです:) – Otiel

関連する問題