- PR -

SendKeys と ProcessDialogKey の違いって…??

1
投稿者投稿内容
月奈
会議室デビュー日: 2006/09/11
投稿数: 8
投稿日時: 2006-09-11 17:34
VB.NETで開発しています。
初心者なんですが

Enterを押下したときに、FocusのSetをしたいのですが、
ソースの修正をしているとFocusの設定方法が2つ出てきました。

ちなみにListBoxからTxtBoxへのSetFocusで

SendKeys.Send("{Tab}")    
と 
ProcessDialogKey(keys.Tab)

との2種類なのですが
2つの違いって何なのでしょうか?
また今後応用していくのならどちらの方が良いのか
いいアドバイスがあれば教えてください。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-11 17:58
引用:

月奈さんの書き込み (2006-09-11 17:34) より:

SendKeys.Send("{Tab}")    
と 
ProcessDialogKey(keys.Tab)

との2種類なのですが
2つの違いって何なのでしょうか?


リファレンスに答えがありますので、リファレンスを見てください。
受け取る方、発信する方とで全然違うことがわかると思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
月奈
会議室デビュー日: 2006/09/11
投稿数: 8
投稿日時: 2006-09-11 19:38
じゃんぬねっとさん返信ありがとうございます☆

リファレンスを読んでみて、SendKeys.Send("{Tab}")はなんとか
理解することが出来たのですが
ProcessDialogKey(keys.Tab)はいまいちよく理解できませんでした。

SendKeys.Send("{Tab}")は処理を投げるだけで
ProcessDialogKey(keys.Tab)は処理が行われたかどうかTrue Falseで返す…
っていうことですか(;_;)?

本当理解力が低くて申し訳ないのですが、この解釈でも大丈夫でしょうか??

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-11 20:41
引用:

月奈さんの書き込み (2006-09-11 19:38) より:

SendKeys.Send("{Tab}")は処理を投げるだけで
ProcessDialogKey(keys.Tab)は処理が行われたかどうかTrue Falseで返す…っていうことですか(;_;)?


大雑把には正しいです。
(ProcessCmdKey メソッドも見て頂いた方が良いかもしれません)

送る側 / 受ける側とで全く違うということがわかったかと思います。
(ProcessDialogKey メソッドが、SendKey と一対一の関係ではあるという意味ではありません)

SendKeys を使った方は、Tab のキーストロークを送信することで、フォーカス遷移を実現しています。
当たり前ですが、受け側では [Tab] キーを受け取るため、特に何かをする必要はありません。

ProcessDialogKey メソッドをオーバーライドしている方は、
Enter キーを補足して、あたかも [Tab] キーを受信したかのように見せかけています。
つまり、フォーカス遷移を自前で実装 (一般的には、SelectNextControl メソッドを使用) しているのです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
月奈
会議室デビュー日: 2006/09/11
投稿数: 8
投稿日時: 2006-09-12 11:04
おはようございます♪
じゃんぬねっとどうもありがとうございます!
返信が大変遅れて申しわけありませんですm(__m

すごく簡易に理解しているかも知れないのですが、
前回の返答を読ませて頂いて理解できました☆(>▽<)

ともかく今回はtab移動だけなのでSendKeysにしようかなと☆
また処理が複雑になっていけば
ProcessDialogKeyにしようかなと思います(・∀・)

じゃんぬねっと本当にありがとうございました☆
また投稿した際にはお世話なるかもしれませんが
その際にはまたよろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)