質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

解決済

2回答

3513閲覧

プログラムを簡潔で分かりやすく組むにはどのようにすればよろしいでしょうか?

fender0131

総合スコア121

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

1クリップ

投稿2016/06/16 10:20

いつも大変お世話になっております。

現在、ツールボックスのコントロールと稲妻マークのイベント
を主に利用しプログラムを組んでいたのですが、だんだんわかりずらいプログラムになってきてしまったので、ツールボックスとイベントについてご教授頂けませんでしょうか?

簡単にこんなプログラムを作ってみました。

・TextboxにEnterでアクセスした際、色を紫に変えます。
・TextboxからLeaveで抜ける際、色を白に戻します。
・Buttonをクリックした際、Textboxに入力されている数値が足されていきます。

この際、まとめられそうな、箇所が何か所もあると思います。
どのようにプログラムを組むことで、簡潔で分かりやすいプログラムを組むことができるのでしょうか?
プロパティ横の稲妻マークでイベント等は起こさない方がいいのでしょうか?

初歩的な質問で申し訳ないのですが、どなた様かご教授ご鞭撻の程よろしくお願い致します。

イメージ説明

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 WindowsFormsApplication11 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } int sum; // Enterイベント private void textBox1_Enter(object sender, EventArgs e) { textBox1.BackColor = Color.Magenta; } private void textBox2_Enter(object sender, EventArgs e) { textBox2.BackColor = Color.Magenta; } private void textBox3_Enter(object sender, EventArgs e) { textBox3.BackColor = Color.Magenta; } private void textBox4_Enter(object sender, EventArgs e) { textBox4.BackColor = Color.Magenta; } // Leaveイベント private void textBox1_Leave(object sender, EventArgs e) { ColorReset(); } private void textBox2_Leave(object sender, EventArgs e) { ColorReset(); } private void textBox3_Leave(object sender, EventArgs e) { ColorReset(); } private void textBox4_Leave(object sender, EventArgs e) { ColorReset(); } // Clickイベント private void button1_Click(object sender, EventArgs e) { sum = sum + int.Parse(textBox1.Text); textBox5.Text = sum.ToString(); } private void button2_Click(object sender, EventArgs e) { sum = sum + int.Parse(textBox2.Text); textBox5.Text = sum.ToString(); } private void button3_Click(object sender, EventArgs e) { sum = sum + int.Parse(textBox3.Text); textBox5.Text = sum.ToString(); } private void button4_Click(object sender, EventArgs e) { sum = sum + int.Parse(textBox4.Text); textBox5.Text = sum.ToString(); } // 色初期化 private void ColorReset() { textBox1.BackColor = Color.White; textBox2.BackColor = Color.White; textBox3.BackColor = Color.White; textBox4.BackColor = Color.White; } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

それぞれのイベントを一つにし、

C#

1 private void textBox_Enter(object sender, EventArgs e) 2 { 3 TextBox s = (TextBox)sender; 4 5 switch(s.Name) 6 { 7 case "textBox1": s.BackColor = Color.Magenta; break; 8 case "textBox2": s.BackColor = Color.Magenta; break; 9 } 10 }

やることが同じであれば、

C#

1private void textBox_Enter(object sender, EventArgs e) 2 { 3 ((TextBox)sender).BackColor = Color.Magenta; 4 }

これで共通ですね。

投稿2016/06/16 11:08

mugicya

総合スコア1046

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fender0131

2016/06/17 01:04

お答えありがとうございます。 private void textBox_Enter(object sender, EventArgs e) { ((TextBox)sender).BackColor = Color.Magenta; } こちらの動きを見て、なるほどと思いました。こちらでだいぶプログラムが見やすくなりそうです!! 大変参考になりました。
guest

0

object sender, EventArgs e を受け取ってるんだから、それをうまく使えばいいと思うよ!

投稿2016/06/16 11:03

matobaa

総合スコア2493

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fender0131

2016/06/17 01:03

お答えありがとうございます。 正直、「object sender, EventArgs e」の中身を深く考えずにプログラムを作成していました。 勉強し直し、「object sender, EventArgs e」の大切さに気付きました!! 参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問