私は、ユーザーが表示したいと思うように設計時にアスペクトを変更するユーザーコントロール(UC1)を持っています。usercontrolデザイン時にプログラムで別のユーザーコントロールを追加する
- ユーザーコントロールUC2(ウィンドウが実行時にのみ示されている)でウィンドウをポップ正規ボタン
- 直接(レギュラーボタンが次に示されていない)
のでUC1でホストUC2私は両方の状況で同じUC2インスタンスを使用したい、私はちょうどUC1とフォーム間の所有権を転送します。
public UC1()
{
_uc2 = new UC2();
}
public bool DisplayModeSimple
{
get { return _displayModeSimple; }
set
{
_displayModeSimple = value;
if (_displayModeSimple)
{
// ... Verify if _uc2 is already in Controls...
Controls.Remove (_uc2);
uiButton.Visible = true;
}
else
{
// ... Verify that _uc2 is not in Controls ...
Controls.Add (_uc2);
uiButton.Visible = false;
}
}
}
private void HandleButtonClick (object sender, EventArgs e)
{
// Not called if DisplayModeSimple=false since button is hidden...
using (var form = new PopupForm (_uc2))
{
form.ShowDialog (this);
}
}
デザインモードとランタイムモードの両方で問題なく動作します。
デザインモードでは、表示モードを変更するとUC1が正しく動作します。
ただし、UC2上にあるコントロールは、実行時のようにクリックすることができます。 UC1をホストしているフォームを閉じて再度開くと、すべてが正常に戻ります。つまり、UC2のどのコントロールでも「クリック」できません。
私はすでにデザインモードをテストしていることは知っていますが、このフラグをテストしてUC2を「デザインモード」にすることができないため、役に立たないことがあります。さらに、UC1(UC2が表示されている)は、ホスティングフォームが設計者に表示されたときに正常に動作します。 –