私はアプリケーション内でドッキング可能なコンテンツとしてmdiの子フォームを持っており、特定のイベントに応じて親フォームからリストボックスを無効/有効にしたいと考えています。親フォームからリストボックスを無効にする
_child.listBox1.Enabled = false;
しかし、それは無効にしていないようです。 _childは、mdiの子フォームbtwのオブジェクト参照です。なぜ動作しないのですか?これをどのように修正できますか?
私はアプリケーション内でドッキング可能なコンテンツとしてmdiの子フォームを持っており、特定のイベントに応じて親フォームからリストボックスを無効/有効にしたいと考えています。親フォームからリストボックスを無効にする
_child.listBox1.Enabled = false;
しかし、それは無効にしていないようです。 _childは、mdiの子フォームbtwのオブジェクト参照です。なぜ動作しないのですか?これをどのように修正できますか?
_child
は、おそらく、子フォームの別のインスタンスを参照します。
_child
は、Show()
と同じインスタンスを参照していることを確認してください。
ねえ、あなたは正しいよ。フォームのインスタンスが2つあり、もう1つは使用しました。今それは動作します;) – david
であることを推測します。
将来、ある機能を追加するために、ListView
のような内部のListBox
を別のタイプに変更する必要があるとします。
このシナリオでは、DisableList
というメソッドをフォームに作成すると、コードの1つの場所を変更して、リストを無効にする方法を更新するだけで済みます。
_client.listbox1.Enabled = false;
などのコードを書く方法を選択した場合は、ListBox
に触れているコードをすべて更新して更新する必要があります。
設計の非常に重要な原則は、クラスの内部実装の詳細をそれを使用する必要があるものに公開することを避けることです。この場合、親フォームがリストがListBox
として実装されていることを知る必要がない場合は、メリットがあります。
これは悪いことですが、ListBoxを1回(2つのタブを切り替えると)無効にして有効にするつもりですので、あまり関係ないはずです。しかし、ListBoxにコードを追加する必要がある場合は、このアプローチを検討します。アドバイスをいただきありがとうございます。 – david
ListBoxの名前を変更する必要があります。 – SLaks