- PR -

ユーザコントロールのタブインデックスについて教えてください

1
投稿者投稿内容
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2006-05-25 19:01
始めての投稿ですが、いつも参考にさせていただいております。申し訳ありませんが、ご存知の方がいらっしゃったら教えてください。

【環境】
VisualStudio2003,VB.NET,Windowsアプリケーション

【問題点】
テキストボックスのロストフォーカス時に日付が入力されていない場合はシステム日付をセットするという簡単ななユーザコントロールを作成しました。

通常の場合は、問題ないのですが、シフトタブで移動した場合などのタブインデックスが現在のタブインデックスより小さい場合はシステム日付をセットしたくない(ブランクのまま)のですが、どのような方法で実装すればいいのでしょうか?

できればユーザコントロールを利用しているフォーム側ではなく、ユーザコントロール内で解決したいのですが、そのようなことは可能でしょうか?

以上、宜しくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-25 19:05
引用:

カタナさんの書き込み (2006-05-25 19:01) より:

できればユーザコントロールを利用しているフォーム側ではなく、ユーザコントロール内で解決したいのですが、そのようなことは可能でしょうか?


一応可能ですが、ユーザーコントロールの範疇じゃないですよね...

方法としては、Validating イベント移行でシステム日付を設定するように変更し、
Validating イベントで FindForm メソッドから ActiveControl を得て... 後はわかりますよね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2006-05-26 10:32
返信が遅れまして、申し訳ありません。

>>一応可能ですが、ユーザーコントロールの範疇じゃないですよね...
申し訳ありません。初心者なので教えてほしいのですが、範疇ではないのでしょうか?
今回のような場合はユーザコントロール側で処理を追加するのではなく、フォーム側に処理を追加する方が正しいということなのでしょうか?教えていただけたら、今後の参考にすることができるのでお願いいたします。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-05-26 10:36
引用:

カタナさんの書き込み (2006-05-26 10:32) より:

>>一応可能ですが、ユーザーコントロールの範疇じゃないですよね...
申し訳ありません。初心者なので教えてほしいのですが、範疇ではないのでしょうか?
今回のような場合はユーザコントロール側で処理を追加するのではなく、フォーム側に処理を追加する方が正しいということなのでしょうか?教えていただけたら、今後の参考にすることができるのでお願いいたします。


横から失礼します。
僕なら、フォーム側に処理を追加すると思います。
この仕様でよく使うのであれば、TextBoxから派生させたクラスを作る方が自然かな?、と思います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-26 11:34
引用:

カタナさんの書き込み (2006-05-26 10:32) より:

申し訳ありません。初心者なので教えてほしいのですが、範疇ではないのでしょうか?


はい、外の世界のコントロールの都合には関与しないものです。
コントロール内で解決したいというのはわかります。
普通は、それが王道であるのですが、外の世界に及ぶ場合はこの限りでないのです。

引用:

今回のような場合はユーザコントロール側で処理を追加するのではなく、フォーム側に処理を追加する方が正しいということなのでしょうか?


上記理由からそれが望ましいのですが、業務上の都合もあるでしょう。(開発が容易になるなど)
UserControl 内で解決したいのであれば、Form の参照から TabIndex の都合を見る方法はどうでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

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