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

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

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

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

Q&A

解決済

1回答

900閲覧

FormをClickするイベントの発生の無効

Tuminokoe

総合スコア2

C#

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

0グッド

0クリップ

投稿2021/12/16 10:21

【再投稿】
c#の学習を始めて1ヶ月の初心者です。

サイト元にwindowsフォームアプリケーションの勉強をしています。

前回の質問で説明不足という指摘を受け、改めて内容をまとめ質問させて頂きました。

・実装したい事
FormをClickするイベントの発生の無効

・試してみた事
this.Form_Click.Enabled = false;(86行目)
こちらのコードを追加したところ、下記のエラーが出てしまいます。

'Form1' に 'Form_Click' の定義が含まれておらず、型 'Form1' の最初の引数を受け付けるアクセス可能な拡張メソッド 'Form_Click' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください

わかる方、ご教授お願い致します。

c#

1 2using System; 3using System.Collections.Generic; 4using System.ComponentModel; 5using System.Data; 6using System.Drawing; 7using System.Linq; 8using System.Text; 9using System.Threading.Tasks; 10using System.Windows.Forms; 11 12namespace dentaku 13{ 14 public partial class Form1 : Form 15 { 16 double change; 17 // 入力された数字 18 string Input_str = ""; 19 20 // 計算結果 21 double Result = 0; 22 23 // 押された演算子 24 string Operator = null; 25 26 public Form1() 27 { 28 InitializeComponent(); 29 } 30 31 //数字ボタンの処理 32 private void Form1_Click(object sender, EventArgs e) 33 { 34 // senderの詳しい情報を取り扱えるようにする 35 Button btn = (Button)sender; 36 37 // 押されたボタンの数字(または小数点の記号) 38 string text = btn.Text; 39 40 // [入力された数字]に連結する 41 Input_str += text; 42 43 // 画面上に数字を出す 44 textBox1.Text = Input_str; 45 } 46 47 private void Form1_Click_1(object sender, EventArgs e) 48 { 49 // 現在の結果を表示 50 double num1 = Result; 51 52 // 入力された文字を表示 53 double num2; 54 55 // 入力された文字が空欄なら計算をスキップ 56 if (Input_str != "") 57 { 58 // 入力した文字を数字に変換 59 num2 = double.Parse(Input_str); 60 61 //四則計算 62 if (Operator == "+") 63 Result = num1 + num2; 64 if (Operator == "-") 65 Result = num1 - num2; 66 if (Operator == "*") 67 Result = num1 * num2; 68 if (Operator == "/") 69 Result = num1 / num2; 70 // 演算子を押されていなかった場合、入力されている文字をそのまま結果扱いにする 71 if (Operator == null) 72 Result = num2; 73 } 74 75 //計算結果を表示 76 textBox1.Text = Result.ToString(); 77 78 // 今入力されている数字をリセットする 79 Input_str = ""; 80 81 // 演算子をOperator変数に入れる 82 Button btn = (Button)sender; 83 Operator = btn.Text; 84 if (Operator == "=") 85 Operator = ""; 86 87 this.Form_Click.Enabled = false; 88 } 89 90 private void radioButton1_CheckedChanged(object sender, EventArgs e) 91 { 92 double change = Result * 110; 93 textBox1.Text = change.ToString(); 94 } 95 96 private void radioButton2_CheckedChanged(object sender, EventArgs e) 97 { 98 double change = Result / 110; 99 textBox1.Text = change.ToString(); 100 } 101 } 102}

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/12/16 12:22

自分勝手で最低。そういうことをしていては誰からも相手にされなくなるよ
guest

回答1

0

ベストアンサー

Formには、Form_Clickってプロパティがないのでエラーが出るのは当然って話です。

まあ、いろいろ方法はありますが、簡単にするなら、クリックイベントの方でなにか(Disable)フラグをチェックして、それが立ってたら何もしないで戻るようにすればいいんではないかと。

投稿2021/12/16 23:32

y_waiwai

総合スコア88042

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

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

退会済みユーザー

退会済みユーザー

2021/12/17 01:09

先のスレッド https://teratail.com/questions/374104 から迷走してきてノイズをばらまいている質問にそういう回答をするのはノイズを増幅するようなものなので止めましょう。 先のスレッドの問題の原因はその質問のコメント欄で Zuishin さんが指摘された通りでしょう。ただし、本質的な問題はそこではなく、Button の Click イベントにハンドラをアタッチすべきところを、Form の Click イベントにアタッチしたところでしょう、たぶん。
Tuminokoe

2021/12/17 02:44

ご丁寧にありがとうございます。 数時間悩んだのですがフラグに関しても上手く実装出来ずにいます。 具体的な方法を教えて頂いてもよろしいでしょうか。
dodox86

2021/12/17 02:48

質問者さんは、プロパティとイベントハンドラーの区別ができておらず、フォームデザイナーで自動生成されるものも分けず、ごっちゃにしているかんじですね。基本の手順の理解をすっ飛ばしているが故の迷走に思えます。
退会済みユーザー

退会済みユーザー

2021/12/17 02:55

> 数時間悩んだのですがフラグに関しても上手く実装出来ずにいます。具体的な方法を教えて頂いてもよろしいでしょうか。 このスレッドは運営に削除依頼を出して、元のスレッド https://teratail.com/questions/374104 に戻って質問を続けたらどうなの? ノイズをばらまいて閲覧者に迷惑をかけている自覚は無いの?
fana

2021/12/17 03:36

> フラグに関しても上手く実装出来ずにいます だったら何故この回答をベストアンサーに選んだのか? 述べられている方法で本当にいけるかどうかの確認も取れていないのなら何も解決してなくない?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問