今日クライアントプログラムを書いたとき、サーバーに接続するときにメインウィンドウを非表示にし、サブウィンドウをポップアップ表示したいと思いました。メインウィンドウを表示したい場合は、サブウィンドウのボタンをクリックして戻ります。
こんな感じで出来るのではないかと思いました↓
ClientForm clientform=new ClientForm();//实例化
clientform.Visible=true;//隐藏为false
自分がナイーブすぎることに気づきました。これは新しいウィンドウを開くだけですが、これは元のウィンドウではありません。
それで、インターネットで検索しましたが、探しているものが見つからないことがわかりました。別のブロガーがタイマーメソッドを書いているのを見たので、これは実現可能ですが、もっと簡単にできるように感じます。
それで私は自分でそれを書き始めました。
まず、子ウィンドウで静的ウィンドウ変数を定義し、渡されたメイン ウィンドウ変数を保存します。
static Form ClientFormSet;//定义一个静态窗口变量去存储主窗口,方便调用
次に、メイン ウィンドウがサブ ウィンドウを開いたときに、メイン ウィンドウを渡します。
MiniClientForm miniform = new MiniClientForm(this);//实例化子窗口,传入本窗口。
MiniformSet.Show();//创建小窗口
仮パラメータもサブウィンドウのコードに追加する必要があります。
public MiniClientForm(ClientForm clientForm)//窗口函数,此时传入了大窗口
{
InitializeComponent();
ClientFormSet = clientForm;//用刚刚定义的静态变量存储大窗口
}
これで、メイン ウィンドウを自由に表示/非表示にすることができます。
if (IsBigFormOpen == false)//这里是我自己定的bool值。如果窗口未打开,则打开
{
ClientFormSet.Visible = true;
IsBigFormOpen = true;//已打开
ReturnSettingBtn.Text = "隐藏设置";
}
else
{
ClientFormSet.Visible = false;
ReturnSettingBtn.Text = "返回设置";
IsBigFormOpen = false;//已关闭
}
とてもシンプルです!