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

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

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

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

Q&A

解決済

3回答

1343閲覧

bool a = textBox1_KeyDown(●●●,✖✖✖);の引数

usamino

総合スコア59

C#

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

0グッド

0クリップ

投稿2019/03/20 16:45

編集2019/03/21 02:26
public partial class Form1 : Form { public Form1() { InitializeComponent(); bool a = textBox1_KeyDown(●●●,✖✖✖); MessageBox.Show(a.ToString()+"が返されました。");    } private bool textBox1_KeyDown(object sender, KeyEventArgs e) { return true; } } ```public partial class Form1 : Form { public Form1() { InitializeComponent(); bool a = textBox1_KeyDown(●●●,✖✖✖); MessageBox.Show(a.ToString()+"が返されました。");    } private bool textBox1_KeyDown(object sender, KeyEventArgs e) { return true; } } 上記は略図となりますがキーダウンで押された結果を戻り値で欲しいのですが引数の●●●、✖✖✖のところに何をいれたら良いのか教えて下さい。渡すものがありません。 初歩の初歩で申し訳ありません。

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

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

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

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

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

m.ts10806

2019/03/20 21:53

コードはマークダウンのcode機能を利用してご提示ください。 またキーダウンイベントをそこで意図的な発生させたい理由は何でしょうか?
draq

2019/03/20 22:05

TextBox にフォーカスがある状態で、キーを押された場合にどのキーが押されたか知りたいのでしょうか。 それとも TextBox に入力されているテキストを取得したいのでしょうか。 あと、textBox1_KeyDown は textBox1 コントロールの KeyDown イベントハンドラで合ってますか? もしそうなら textBox1_KeyDown に戻り値はないので、メソッドのシグネチャが間違っています。
usamino

2019/03/20 22:57

mts10806様 マークダウンのコードですね、確認させて頂きます。ありがとうございます。 私のやりたい事は打ち込んだものが正解か不正解かをboolで返ってくるようにしてみたいのです。キーダウンイベントしか思いつきませんでした。何か方法がございますでしょうか?
m.ts10806

2019/03/20 22:59

textBox1_KeyDown()内に書けば良いのでは? イベント拾ってるので押したキーも拾えるはず
usamino

2019/03/20 23:00

draq様 textBoxに押されたテキストに成否判定をつけてboolで返したいと思っております。思っていたのはイベントハンドラですがイベントハンドラにこだわりはございません。何か方法はございますでしょうか
YAmaGNZ

2019/03/20 23:35

1つのキーで判断したいのか、入力された文字列で判断したいのかで話が変わってきますがどちらでしょうか?
usamino

2019/03/21 00:38

すいません。入力は一文字のcharでございます。 考えて質問させて頂いたつもりですが自分の知識の無さを痛感致します。
guest

回答3

0

キーが押されたときに、テキストボックスの入力値をチェックするのであれば、以下のような感じなるかと思いますが、どうでしょうか?

C#

1public partial class Form1 : Form 2{ 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 8 private void textBox1_KeyDown(object sender, KeyEventArgs e) 9 { 10 if (textBox1.Text == "正解") 11 { 12 MessageBox.Show("「正解」と入力されました。"); 13 } 14 } 15}

投稿2019/03/20 23:24

nskydiving

総合スコア6500

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

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

draq

2019/03/20 23:33

コピペされた場合を考慮すると、TextChangedイベントの方がいい気がしますね。
usamino

2019/03/21 00:45

なるほどTextChangedでも似たような感じなのですね。 使い分けは難しいですね。
usamino

2019/03/21 01:01

少しやり方を変えてトライしてみようと思います。 ありがとうございました。
guest

0

やりたいのはこういうことでしょうか?

C#

1private void textBox1_KeyDown( object sender, KeyEventArgs e ) { 2 if( e.Modifiers == (Keys.Shift & Keys.Control) && e.KeyCode == Keys.A ) { 3 //(Shift + Control + A)を押したときの処理 4 } 5} 6

投稿2019/03/20 23:30

draq

総合スコア2573

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

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

usamino

2019/03/21 00:42

はい、イメージはこんな感じですが成否の判断は戻ってきたboolで処理をしようかと思っておりました。
usamino

2019/03/21 01:00

何か私の考え方がおかしいようなので再度考えて試してみようと思います。 ありがとうございました。
guest

0

ベストアンサー

呼び出した先の関数でそれらの値をどう使ってるか、によります。
使ってなければnullでいいんじゃないでしょうか

んで、キーダウンで押された結果を取りたいなら、イベント関数呼ぶのではダメです
キーダウンイベントを呼ばれたときのキーの値をどっかの変数に保存しといて、なんかの関数でその値を返すようにしましょう

投稿2019/03/20 23:04

編集2019/03/20 23:38
y_waiwai

総合スコア87774

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

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

usamino

2019/03/21 00:46

そうなんですね。 それが普通のやり方なのですか。 基本的な考え方を学ばなければいけません。 了解致しました。 ちょっとやってみます。
y_waiwai

2019/03/21 02:24

もちっと解説しますと、 イベント関数ってのは、何らかの操作(イベント)がされたときに、システムから呼び出される関数です この場合は、キーが押されたときに、textBox1_KeyDownを、押されたキーの情報をeに入れて呼び出されます なもんで、ユーザがtextBox1_KeyDownを呼んでもあんまし意味はありません
usamino

2019/03/21 02:36 編集

三つくらい質問があってそれぞれにtrue、falseを戻してまとめて点数を加算したいと思っておりました。 bool 1=bool textBox1_KeyDown(問題1);  //true⇒加点 bool 2=bool textBox1_KeyDown(問題2);  //true⇒加点 bool 3=bool textBox1_KeyDown(問題3);  //false⇒減点 毎回問題が変わるのでKeyDownメソッドを作っておくわけにも行かずいろいろ考えておりました。
usamino

2019/03/21 02:35

毎回問題が変わるのでKeyDownメソッドを作っておく訳にもいかず考えておりました。
YAmaGNZ

2019/03/21 03:06

その時の答えを入れておく変数を用意して、それと入力を比較すればいいだけかと 問題を変更する時に正解を格納する変数を更新すればいいだけです。
usamino

2019/03/21 15:13

ご丁寧にありがとうございます。 なかなか文章やコードですと難しいですね。 おそらく string a = textBox1.Text; if(a==Question){ MessegaBox("正解"); のような感じですね。 ちょっと試してみます。 本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問