弊社で最も規模の大きなプロジェクトはWindowsFormにて開発が行われています。
先日、そのプロジェクトにてコントロールを別ウィンドウ化する処理を
既存の実装を参考にして実装したのですが、
予想以上に手軽に出来て驚きました。
以下のようにするだけでした。
// 別ウィンドウとなるフォームを作成
var window = new Form {
Owner = this.ParentForm,
Width = this.Width,
Height = this.Height
};
// 別ウィンドウ化したい対象コントロールの親コンテナに新規ウィンドウをセット
// (別ウィンドウに移し替える)
targetControl.Parent = window;
// 別ウィンドウクローズ時に親コンテナを元に戻すように
window.FormClosed += (_, _) => {
targetControl.Parent = this;
};
window.Show();
親コンテナのSetterは参照を移し替えるだけかと思い込んでいたのですが、
配置も移し替えるのですね。
便利に作られていてありがたいです。