【C#】画面遷移1(ユーザーコントロールを使う)
C#に慣れないため、このやり方が普通なのか????と思いながら、
画面を切り替える方法を備忘録としてまとめました。
Visual c# Formでは、「フォーム」「ユーザーコントロール」があります。
フォームはそれだけでWindowが作れる、
ユーザーコントロールは、
Formのように画面は作れるのですが、Form上に張り付けられる画面(コンポーネント)、
とかなりざっくりとですが捉えています。
「カスタムコントロール」というのもあるようなのですが、
公式曰く、
カスタム コントロールは、通常の Web フォームまたはユーザー コントロールと同様のサーバー上で実行し、オブジェクト モデルを公開し、HTML や XML などのマークアップ テキストをレンダリングするコンパイル済みコード コンポーネントです。
https://support.microsoft.com/ja-jp/help/893667/overview-of-user-controls-vs-custom-controls
既にコンパイルしたものを使うっぽいです。
やること
- Formのボタンを押したら画面が切り替わる
- 切り替わる部分の画面はユーザーコントロールを使う
例えば、サイトとかで上部の文字を押下したら、下部の画面が切り替わるようなイメージです。
完成図
ボタン押下で画面下部が切り替わる。
下準備
バージョンによって異なるかもしれませんが、以下の手順でユーザーコントロールを追加します。
プロジェクトを追加→ユーザーコントロールの追加
us_pika1.cs
us_pika2.cs
画面の切り替えがわかるように2つ作成
Formはプロジェクトを作成した時点で、Form1が出来ているのでこれを使用
上2つのユーザーコントロールを作成後、一度ビルドを行うとツールボックスにコンポーネントとして2つ表示されます。
Formにユーザーコントロールを貼る
コンポーネントにユーザーコントロールが表示されるので、ドラックして貼ります。
貼ったときのサイズと、実際のユーザーコントロールのサイズを同じ大きさにしました。
サイズの変更は、us_pika1.cs、us_pika2.csのプロパティのsizeから変更できます。
Formにボタン設置
Formのデザイン画面に戻り、ツールボックスからbuttonを選択。
デザイン上に置いたボタンをダブルクリックすると、Formのソース上に以下のように追加されます。
private void Button1_Click(object sender, EventArgs e) { } private void Button2_Click(object sender, EventArgs e) { }
ここにボタン押下でやりたいことを記載。
ユーザーコントロール切り替え表示
private void Button1_Click(object sender, EventArgs e) { us_pika21.Visible = false; us_pika11.Visible = true; } private void Button2_Click(object sender, EventArgs e) { us_pika11.Visible = false; us_pika21.Visible = true; }
フィールド名は勝手に1がつくらしく、Visibleでボタン押下した方の画面を表示させます。
参考
手順 1: Windows フォーム アプリケーション プロジェクトの作成
2画面切り替えなら簡単ですね。
画面が大量だとどうなるのだろう……