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

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

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

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

Q&A

解決済

1回答

1070閲覧

C# public void Plus_button_Click(object sender, EventArgs e,int Plus)から下で困ってます

notName

総合スコア4

C#

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

0グッド

0クリップ

投稿2021/12/01 05:40

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
C#で計算機(演算子は+のみ)を作成してます

発生している問題・エラーメッセージ

CS1955
CS0103

エラーメッセージ

該当のソースコード

ソースコード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 kadai03 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Sum_1_Click(object sender, EventArgs e) { int Sum; Sum = 1; textBox1.Text += Sum.ToString(); } private void Sum_2_Click(object sender, EventArgs e) { int Sum; Sum = 2; textBox1.Text += Sum.ToString(); } private void Sum_3_Click(object sender, EventArgs e) { int Sum; Sum = 3; textBox1.Text += Sum.ToString(); } private void Sum_4_Click(object sender, EventArgs e) { int Sum; Sum = 4; textBox1.Text += Sum.ToString(); } private void Sum_5_Click(object sender, EventArgs e) { int Sum; Sum = 5; textBox1.Text += Sum.ToString(); } private void Sum_6_Click(object sender, EventArgs e) { int Sum; Sum = 6; textBox1.Text += Sum.ToString(); } private void Sum_7_Click(object sender, EventArgs e) { int Sum; Sum = 7; textBox1.Text += Sum.ToString(); } private void Sum_8_Click(object sender, EventArgs e) { int Sum; Sum = 8; textBox1.Text += Sum.ToString(); } private void Sum_9_Click(object sender, EventArgs e) { int Sum; Sum = 9; textBox1.Text += Sum.ToString(); } private void Sum_0_Click(object sender, EventArgs e) { int Sum; Sum = 0; textBox1.Text += Sum.ToString(); } public void Clea_button_Click(object sender, EventArgs e) { textBox1.Text = null; } private void TextBox1_TextChanged(object sender, EventArgs e) { } public void Plus_button_Click(object sender, EventArgs e,int Plus) { Plus = int.Parse(textBox1.Text); textBox1.Text = null; } public void Button1_Click(object sender, EventArgs e) { int equal; int pass; int wa ; wa = Plus_button(Plus); pass = int.Parse(textBox1.Text); equal = pass + wa; textBox1.Text = equal.ToString(); } } }

試したこと

ref関数でもダメでした
ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。
Plus_bottonの所にある変数名Plusを変数名waに値渡しをしたいです

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

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

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

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

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

BeatStar

2021/12/01 05:53

これ、本当にコンパイル通りますか? Plus = int.Parse(...); となっていますが、型が無いのですが…(Plusが型のつもり? でもそうすると変数名が無いし...)
dodox86

2021/12/01 06:29

雰囲気でコードを書いていませんか。ちゃんと説明もしましょう。
gentaro

2021/12/01 08:55

うーん確かにこれは雰囲気で書いたコードにしか見えない。 そもそもイベントハンドラの型を理解してないっぽいし、初歩的な事を全く勉強してないんだろう。
notName

2021/12/01 13:10 編集

BeatStarさんそこでつまずいてます。調べていますが…の状態です どうしたらいいのか教えてください。
BeatStar

2021/12/01 13:15

失礼。Plusに関しては引数として定義されていますね…(普通、こんなところに書かねーよって感じですが)
BeatStar

2021/12/01 13:16

とりあえず、『基礎から』やりなおしてください。今やっていることは、足し算すらまともに理解していないのに微積分をやろうとして『わかんねーーんだよ!!!』と喚き立てている状態です。 いや、足し算からやろうよ…と言いたくなりますよね。 入門書(サイトでもいいが)にあるものは『基礎』です。変数やら配列やらif文やらメソッドやらのようなものを組み合わせてプログラミングをするのです。でもその基礎をすっ飛ばしているから、わからない。 質問にあるコード、かなり歪(いびつ)で、明らかに基礎が出来ていないんだろうなとはっきりとわかるレベルです。
notName

2021/12/01 13:17

dodox86さんgentaroさんの言う通り雰囲気でやっています。 初歩的な事を学び始めたばかりなのに作らされる事になっています。 イベントハンドラなんて言葉はこれを通して知った事は隠せません 本題に入りますがどうしたらいいですか?
notName

2021/12/01 13:29

BeatStarさん引数としての定義はネットで見たものをそのままマネたのですが”こんなところに書かねーよ”は貴重な情報ですので助かります。 微積分?なにそれ?これ足し算じゃないの?極力、楽なやり方を考えてやっていたのに…というド素人丸出しです。 ちなみになんですが変数waに変数Plusを代入させるならどうしたら 教えてくれませんか?
guest

回答1

0

ベストアンサー

本題に入りますがどうしたらいいですか?

まず基礎からやる。

一応、今回は回答しますが、次からはご自分で調べてください。


えーっと、まず、イベントハンドラとは何でしょうか?
そう、イベントについての発火装置ってところですね。「ボタンが押されたら~」とか「フォントが変更されたら~」とか。

ではこのイベントは誰が発火させているでしょうか? 恐らく、.NET Framework(または.NET Core)でしょうね。

でも、メソッドはどのように呼び出しますか?
そう、『引数はこれこれで、戻り値はこれとしてこういうメソッドを呼び出す』…的な感じですよね。

たとえば、System.Console.WriteLineメソッド(使うときはConsole.WriteLineとか)の引数がその都度変わるとなるとどうでしょうか?
すごいやりづらいですよね? というか無理ですよね?
「今俺が食べたいと思っているものを一発で当てろ」ぐらい無茶ぶりレベルです。

でもイベントとして、何かしらのメソッドを用意しないといけない。…ってことで、「こういう引数を受け取るメソッドを用意して、それをイベント用とします」と定義してみましょう。
そうすると、メソッド名さえわかれば後はどうとでもできますね。
(だって引数の種類とかは自分が管理しているから)

そのために、C#ではデリゲートと呼ばれるもので実装しています。

button1.Click += new EventHadler( Button1_Click );のように EventHandlerみたいなもので指定しています。(VC#とかだとIDE側がやってくれるようだけど)

そして、今回のコード。
public void Plus_button_Click(object sender, EventArgs e,int Plus)ですが、第一引数と第二引数はいいですが、なんですか、この第三引数。
こんな余計なことをして、動くと思いますか?
今やっているのは、『自分が今作った単語(造語)で話して、通じないからといって逆ギレしている』状態です。無茶いうなよ…って感じですね。

実際に動かす側(.NET Framework側?)は想定された動かし方とは違うので使えないはずです。

で、どうすればいいか。それは仕様による。ですね。

[ヒント] ■ クラス ■ メソッド ■ フィールド ■ プロパティ ■ デリゲート ■ イベント ■ プログラミングとは

この辺をちゃんとやればわかるはずです。

投稿2021/12/01 13:35

編集2021/12/01 13:41
BeatStar

総合スコア4962

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

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

notName

2021/12/01 14:05

丁寧でわかりやすい説明で本当に助かります! ヒントではどの言語問わず必須知識であることを再認識しました。 (フィールドは初めて知りましたが)
notName

2021/12/01 14:16

Plus_botton...(... , int Plus)のint Plusを消して ... class From1 : From{ int Plus; public Form1(){ } } に持ってくる事でとりあえず動くことができました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問