1

単純な継承に問題があります。問題は非常に単純です。

から派生した のParent Form名前があります。MainFormSystem.Windows.Forms.Form

MainForm : System.Windows.Forms.Form

2 つ目ChildFormは から派生したものMainFormです。

ChildForm : MainForm

MainFormボタンしかありません。これは明らかprivateにこのクラス用です。ボタンは を呼び出しますChildForm

ここに画像の説明を入力

しかし、作成ChildFormした後もそのボタンがあり、それで何もできません。デザインパネルにもありませんが、アプリケーションを実行すると動作し、ChildForm. 全然思いつかなかった…

ここに画像の説明を入力

では、どうすればそれを削除しChildFormて元の場所に保つことができますか? なぜプライベートメンバーがその範囲外に表示されているのですか?

4

2 に答える 2

2

それはその範囲外にまったく示されていません。ChildForm のインスタンスを作成すると、MainForm のインスタンスも取得され、ボタンのように、その小片がすべて揃っています。'private' スコープは、開発時にそのボタンにアクセスする方法に影響を与えるだけです。つまり、フォームのクラスの外からプログラムでアクセスすることはできません。

あなたがする必要があるのは、子フォームからボタンの可視性を設定できるパブリックまたは保護されたプロパティを作成することです。子フォームでは、そのプロパティを目的のデフォルト値に切り替える (設定する) ことができます。これに適した場所は、コンストラクターまたはフォームの初期化ルーチンです。使用している UI テクノロジに応じて、ボタンの可視性をプロパティに直接バインドしたり、フォームのプロパティが変更されたときにボタンのプロパティをプログラムで設定したりできます。

于 2013-06-16T06:34:37.777 に答える
0

子フォームがメインフォームから継承する必要があるのはなぜですか? 私が理解していることから、メインフォームには、子フォームインスタンスを作成して表示するボタンがあります。フォーム上の唯一のものを無効にしてしまうと、それを継承しても意味がありません...

ChildForm を独自のフォーム (MainForm ではなく System.Windows.Forms.Form から継承) にするだけで、ChildForm からボタンが削除され、MainForm のボタンを公開/保護する必要がなくなります。

于 2013-06-16T06:47:38.483 に答える