- PR -

フォーカスの縦移動

1
投稿者投稿内容
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-06-19 17:06

いつもお世話になっております。

VB.net2003にてWindowsアプリケーション開発を行っております。

そこで、早速質問なのですが、Form上にコントロールがいくつか配置されていて、
あるコントロール上でEnterキーが押された場合、
押されたコントロールのすぐ下の一番左のコントロールに
フォーカスを遷移させたいのですが、なかなかいい方法が思いつかないので、投稿
させていただきました。

フォームに配置されているコントロールを取得し、ループで位置を取得する、
方法しか思いつかずに悩んでおります・・・。

どうか、よろしくお願いいたします。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-06-19 17:14
引用:

あるコントロール上でEnterキーが押された場合、
押されたコントロールのすぐ下の一番左のコントロールに
フォーカスを遷移させたいのですが、

フォームに配置されているコントロールを取得し、ループで位置を取得する、
方法しか思いつかずに悩んでおります・・・。


Controlクラスに順番(TabIndex)という概念しかない以上、それしかないのでは。
Yam
大ベテラン
会議室デビュー日: 2003/09/13
投稿数: 179
お住まい・勤務地: だんじり祭りの地
投稿日時: 2006-06-19 17:15
Enterキー(・A・)イクナイ!
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-19 17:24
TabIndex は Tab でのフォーカス遷移も考えて、
当然、意図した順番で設定しなければなりません。

その上で、こちらになるでしょう。

  フォームで [Enter] キーが押された時にフォーカスを遷移させる

リンク先に書いているように、お勧めはしません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-06-19 18:14

みなさま、さっそくのご返答ありがとうございました。

確かに、EnterキーでのTab遷移はよろしくないとは、承知の上でございます。
ただ、顧客のどうしてもの要望で・・・。

結局、TabIndexが正しく振られているのが前提条件の上下記の方法にて
実装する事にしました。

1.現在アクティブなコントロールの次のTabIndexのコントロールを取得。

2.取得したコントロールが、一定以上、上位置の間隔があいていない場合、無視。

不具合が発生するような、気もしますが、これでいこうと思います。

以上

どうもありがとうございました。

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

.netさんの書き込み (2006-06-19 18:14) より:

1.現在アクティブなコントロールの次のTabIndexのコントロールを取得。
2.取得したコントロールが、一定以上、上位置の間隔があいていない場合、無視。

不具合が発生するような、気もしますが、これでいこうと思います。


GroupBox や Panel などのコントロールで、その横のグループを明示化した方が良いですね。
これならば、縦に移動 (?) する判断も正しくできます。
そして、"不具合が発生するような、気もしますが" が、払拭されます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-06-19 21:17
 配置場所を2次元管理するクラスを作り、それに登録。

 ところで、[TAB]が押されたときにはどうするか、考えてありますか?
# 考えてあるならいい
.net
ベテラン
会議室デビュー日: 2005/04/11
投稿数: 95
投稿日時: 2006-06-20 09:05

皆様、さっそくのご回答ありがとうございました。

>じゃんぬねっと様
さっそくの、問題点のご指摘ありがとうございます。
指摘点を考慮し考えたいと思います。

>Jitta様
Tabでのフォーカス遷移は通常通りなので、今回は考慮対象外としています。

どうも、ありがとうございました。

1

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