アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB.NETでプログラミングをしております。

TabControlを聞かない様にするには、どうすれば良いのでしょうか ?
1つ目のタグや2つ目のタグと固定にしたいのです。

但し、Tabの中のTextBoxの入力等はしたいのです。

宜しくお願い致します。

A 回答 (4件)

本当は、先頭に制御可能フラグ(Boolean)を持たせて、


・タブコントロール.Enter/Leave/Validating/Validating/SelectedIndexChanged
・タブページ.Enter/Leave/Validating
などのフォーカス系/入力チェック系イベントでのフラグの制御を行い、
・e.Cancel=制御フラグ
としたいです

が!

タブコントロール以外にフォーカスを持たせた後、カレントではないタブをクリックすると、
1.タブコントロール.SelectedIndexChanged
2.タブコントロール.Enter
という順序でイベントが発生するという大問題があります。(.NET2002でのことです。そちらの環境がわからないので、そちらで同じ動作を行うかがわかりません。)
これってバグなのかな?

これを回避する方法は知りませんが、直接イベントをフックさせたらできるかも?(保障なしです)

代案になりますが、タブ内のテキスト項目に正常な入力が行われていなければ絶対にフォーカスを移させないということと、ページ移動ボタンも、タブコントロール内部に設置することにより、対応可能です(苦しい代案です)
さらに画面終了ボタンも内部に設置し、画面が閉じようとしている時の状態も認識する必要があります。
http://dobon.net/vb/dotnet/form/unloadmode.html


完全な回避方法を見つけた人がいたら、教えて欲しいぐらいです。^^;
    • good
    • 0
この回答へのお礼

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

>1.タブコントロール.SelectedIndexChanged

を使用して解決致しました。
今度も宜しくお願い致します。

お礼日時:2005/09/03 11:09

>TabControl1_Validating(パラメータ[sender,e]) Handles TabControl1.SelectedIndexChanged


違います。

タブコントロールではありません。
タブコントロール内の、各タブページのValidatingです。

TabPage1_Validating(パラメータ[sender,e]) Handles TabPage1.Validating
TabPage2_Validating(パラメータ[sender,e]) Handles TabPage2.Validating

#1ではそれを組み合わせて(TabPage1_Validating + TabPage2_Validating)
TabPages_Validating(パラメータ[sender,e]) Handles TabPage1.Validating, TabPage2.Validating
としておりました。


#1であげた参考URL
http://msdn.microsoft.com/smartclient/community/ …
[How do I prevent the user from changing the selected tab page in a TabControl?]
とほとんど変わりませんが、一応サンプル


'イベント/フォーム/Load
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Me.Show()
  Call TabControl1_SelectedIndexChanged(TabControl1, New System.EventArgs())
End Sub

'イベント/タブコントロール/SelectedIndexChanged
Private Sub TabControl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged
  Me.TabControl1.TabPages(Me.TabControl1.SelectedIndex).Focus()
End Sub

'イベント/タブページ[TabPage1・TabPage2]/Validating
Private Sub TabPages_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TabPage1.Validating, TabPage2.Validating
  e.Cancel = True
End Sub

参考URL:http://msdn.microsoft.com/smartclient/community/ …
    • good
    • 0
この回答へのお礼

ありがとうございました。成功いたしました。
ただ、もう1つお聞きしたいのですが、

これを解除するにはどうすれば良いのでしょうか ?
つまり、他のタグや全く外のTextBoxに移動したいのです。何度もすみません。宜しくお願い致します。

お礼日時:2005/09/02 15:44

>TabControl1.SelectedIndex = 0


>他のタグは選択できない

なので
タブページのValidatingイベントで
e.Cancel = True
を指定するとできます。

この回答への補足

何度も、ありがとうございます。
Private Sub TabControl1_Validating(ByVal sender
As Object, ByVal e
As System.ComponentModel.CancelEventArgs)
Handles TabControl1.Validating

e.Cancel = True

End Sub

と、入れたのですが、他のタグも選択できてしまい
ます。宜しくお願い致します。

補足日時:2005/09/02 14:39
    • good
    • 0

タブコントロールの中の全ての各タブページに対し


[タブページ.Validating]
をハンドリング
http://www.microsoft.com/japan/msdn/library/defa …

Private Sub TabPages_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TabPage1.Validating, TabPage2.Validating, TabPage3.Validating
e.Cancel = True
End Sub


http://msdn.microsoft.com/smartclient/community/ …
[How do I prevent the user from changing the selected tab page in a TabControl?]


http://homepage1.nifty.com/rucio/main/dotnet/sho …

この回答への補足

ご回答をありがとうございます。すみません、よく解りません。
こちらの説明不足かもしれません。具体的に説明しますと
[TabControl1]に、TabPage1/TabPage2 の2つのタグがあります。

ある条件で、TabControl1.SelectedIndex = 0 と、選択した状態にし、
他のタグは選択できない様にしたいのです。
宜しくお願い致します。

補足日時:2005/09/02 10:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!