スポンサーリンク
※サイト運営にサーバーは必須です※
~ ロリポップ! はコスパのよい初心者向けサーバーです~
目次
はじめに
この記事は、Visual Studio初心者向け講座の一環で書かれた記事である。サイコロの代わりになる乱数生成ソフトが作れるようになる。
目次へ:Visual Studioでソフトを作ってみよう(初心者向け)
Formの追加の手順
「プロジェクト」の「Windowsフォームの追加」を押す。
Windowsフォームで名前を適当に決める(ここではBase1.cs)
Formの継承をする狙い
複数のフォームにまたがるWindowsソフトを作るときは、基礎となるフォームを一つ作っておくと何かと便利である。
※一つのフォームで収まるソフトの場合は、そこまで恩恵がない。だが、後で複数のフォームにしたい場合とか想定すると作っておいて損はない気がする。
Form継承の手順
Form1においてBase1クラスを継承することを考える。
「ソリューションエクスプローラー」で「Form1.cs」をダブルクリックする。
左上に表示される「Form1」をダブルクリックする。
public partial class Form1 : Form
を
public partial class Form1 : Base1
と書き換える。
親となるFormの編集
今の状況では、
親:Base1
子:Form1
となっている。
ここで親(Base1)に対していくつかコードを加える。
(最終的には以下のように書く)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Dices { public partial class Base1 : Form { public Base1() { InitializeComponent(); } private void Base1_Load(object sender, EventArgs e) { this.Text = "Dices";//フォームの名前を統一 SetSelectAll(this);//Ctrl+Aが機能するため用 } //Ctrl+Aが機能するため用 private void SetSelectAll(Control target) { foreach (Control control in target.Controls) { if (control.HasChildren) { // 子コントロールがある場合は再帰的に処理 SetSelectAll(control); } // TextBox以外は何もしない if (control is TextBox == false) { continue; } // Ctrl-Aが押されたときに全選択させるハンドラを追加 control.KeyDown += (sender, e) => { if (e.Control && e.KeyCode == Keys.A) { (sender as TextBox).SelectAll(); } }; } } } } |
22行目、
this.Text = “Dices”;//フォームの名前を統一
はフォームの左上の名前を「Form1」から「Dices」にすることに対応する。
このフォームを引き継げば、コードを実行(Ctrl+F5)した時、左上が「Dices」になる。
これにより、複数のフォームに対して、左上の部分を共通化させることができる。
それ以降のコードは、Ctrl+Aでテキストが全選択されるようにするためのおまじない。
コードは、以下のサイト(外部記事)で紹介されているものをそのまま拝借した。
→Form上の全TextBoxに対し、Ctrl-Aで全選択できるようにする方法
関連記事
目次へ:Visual Studioでソフトを作ってみよう(初心者向け)
次の記事へ:Visual Studioでラベルやボタンの配置をする
前の記事へ:Visual Studioで新しくファイルを作る方法
~ギャンブルに絶対儲かる必勝法があるのだろうか?~
私(サイト主)はこの疑問に対して非常に興味を持ち、プログラミングで検証してみました。
このサイトを応援してもいいかなと思う人はぜひとも購入を検討してみてください。
コメント