C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Keyboard.GetKeyStatesに関して


(過去ログ 164 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■94959 / inTopicNo.1)  Keyboard.GetKeyStatesに関して
  
□投稿者/ luka (7回)-(2020/06/06(Sat) 19:29:05)

分類:[C#] 

bool isRunning = true;

void EnterKeyboard()
        {
            while (isRunning)
            {

                if ((Keyboard.GetKeyStates(Key.F1) & KeyStates.Down) > 0)
                {
                   MesseageBox.Show("F1が押されました");
                }
                
            }
        }

Keyboard.GetKeyStates(Key.@)
ここの @ を listBoxで選択されたキーにしたいのですが
可能でしょうか.. ?

引用返信 編集キー/
■94960 / inTopicNo.2)  Re[1]: Keyboard.GetKeyStatesに関して
□投稿者/ Azulean (1155回)-(2020/06/06(Sat) 20:10:37)
No94959 (luka さん) に返信
> Keyboard.GetKeyStates(Key.@)
> ここの @ を listBoxで選択されたキーにしたいのですが
> 可能でしょうか.. ?

おそらくできるとは思いますが、ListBox に「何を入れるのか」、「入れている何かと Keys.〇 をどのように紐付けるか」が大事だと思います。

たとえば、ListBox.Items.Add(Keys.A) 〜 Add(Keys.Z) というように、Keys 型で登録しているなら、Keyboard.GetKeyStates((Keys)listBox1.SelectedItem) で済むかもしれません。
ただ、こういう風にすると、ListBox の見た目をカスタマイズできませんが…。
引用返信 編集キー/
■94961 / inTopicNo.3)  Re[1]: Keyboard.GetKeyStatesに関して
□投稿者/ Hongliang (1046回)-(2020/06/06(Sat) 20:14:07)
2020/06/06(Sat) 20:20:45 編集(投稿者)
勘違い等あったので削除しました。

引用返信 編集キー/
■94962 / inTopicNo.4)  Re[1]: Keyboard.GetKeyStatesに関して
□投稿者/ Hongliang (1047回)-(2020/06/06(Sat) 20:32:59)
使用されている型名からして、WPFの話と仮定しています。

MVVM的には、
・string NameプロパティとKey Keyプロパティを持つクラスXを作る
・VMにList<X>(またはObervableCollection<X>)型のKeysプロパティとX型のSelectedKeyプロパティを用意
・ListBoxのItemsSourceにKeysプロパティをバインディングし、DisplayMemberPathにNameを設定
・ListBoxのSelectedItemにSelectedKeyプロパティをバインディング
で、必要な時にSelectedKeyを参照することで選択されているキーを取得することはできます。
引用返信 編集キー/
■94963 / inTopicNo.5)  Re[2]: Keyboard.GetKeyStatesに関して
□投稿者/ luka (8回)-(2020/06/06(Sat) 20:40:23)
No94962 (Hongliang さん) に返信
> 使用されている型名からして、WPFの話と仮定しています。

すいません、記述不足でした。
Windows Form Application です..
引用返信 編集キー/
■94965 / inTopicNo.6)  Re[2]: Keyboard.GetKeyStatesに関して
□投稿者/ luka (9回)-(2020/06/06(Sat) 21:18:10)
No94960 (Azulean さん) に返信
> たとえば、ListBox.Items.Add(Keys.A) 〜 Add(Keys.Z) というように、Keys 型で登録しているなら、Keyboard.GetKeyStates((Keys)listBox1.SelectedItem) で済むかもしれません。
> ただ、こういう風にすると、ListBox の見た目をカスタマイズできませんが…。

記述不足すいません。。
WindowsFormApplicationで C#です。
listBoxには Key. で表示される値を全て入力するつもりでした。

Keysだとエラーになってしまったので(Key)listBox1.SelectedItemでエラーは出なくなったのですが
エラーなく、アプリが落ちてしまうようになりました..


引用返信 編集キー/
■94966 / inTopicNo.7)  Re[3]: Keyboard.GetKeyStatesに関して
□投稿者/ Azulean (1156回)-(2020/06/07(Sun) 07:03:34)
No94965 (luka さん) に返信
> Keysだとエラーになってしまったので(Key)listBox1.SelectedItemでエラーは出なくなったのですが
> エラーなく、アプリが落ちてしまうようになりました..

落ちるというのは、例外が出たときのダイアログが表示されず、静かにいなくなる…ということですか?
もし、exe ファイルをエクスプローラーなどから直接実行しているのであれば、デバッグ実行してみてください。

「(Keys)listBox1.SelectedItem」と手抜きで書いてしましたが、ListBox で何も選ばれていないときは、listBox1.SelectedItem が null になります。
null を (Keys) とキャストしようとすると例外になるので、事前に if (listBox1.SelectedItem == null) return; // 何もしない みたいな条件分岐が必要です。
引用返信 編集キー/
■94970 / inTopicNo.8)  Re[4]: Keyboard.GetKeyStatesに関して
□投稿者/ luka (10回)-(2020/06/07(Sun) 16:10:14)
No94966 (Azulean さん) に返信
> ■No94965 (luka さん) に返信
>>Keysだとエラーになってしまったので(Key)listBox1.SelectedItemでエラーは出なくなったのですが
>>エラーなく、アプリが落ちてしまうようになりました..
>
> 落ちるというのは、例外が出たときのダイアログが表示されず、静かにいなくなる…ということですか?
> もし、exe ファイルをエクスプローラーなどから直接実行しているのであれば、デバッグ実行してみてください。
>
> 「(Keys)listBox1.SelectedItem」と手抜きで書いてしましたが、ListBox で何も選ばれていないときは、listBox1.SelectedItem が null になります。
> null を (Keys) とキャストしようとすると例外になるので、事前に if (listBox1.SelectedItem == null) return; // 何もしない みたいな条件分岐が必要です。


ブレイク状態になって消えていました。
別のコードによるものでした
お陰様で、自分が作りたい物が完成しました。
ありがとうございました。!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -