2009-04-02 24 views
2

TabControlに2つのタブがあります。ユーザーがあるタブから別のタブに切り替えるたびに(データはデータベースに保存する必要があるかどうかをチェックする)、タブ1からタブ2、タブ2からタブ1のいずれの方向にも切り替えることができます。これはどうすればいいですか?タブを切り替える

私は、各タブにアタッチされるButtonBase.Clickイベントを使用することを考えましたが、何らかの理由でトリガーしません。

編集:ユーザーが変更を保存しないことを決定した場合、そのイベントを「キャンセル」できるようにすることを忘れて、離席しようとしていたタブに「戻る」必要があります。

+0

もう少し編集しました:フォーラムサイトではなく、集中したQ/Aサイトであるため、挨拶と紹介が途中で行われます。あなたの質問がフロントページや概要から何であるかを人々が知ることができなくなるため、紹介は特に悪いことです。 – chaos

+0

それはクールです、私は将来の質問でこれを書き留めます。 – Alexandra

答えて

2

タブコントロールのSelectionChangedイベントを確認してください。

EDIT:変更は、イベントをキャンセルまたは保存キャンセルしたい

を質問するには?保存キャンセルするための

が、それはこれらの線に沿ってユーザーに何か尋ねるの問題だ:TAB変更を取り消すための今すぐ

Dim msRes as MessageResult = MessageResult.No 
If mySwitchedFromTab.IsDirty Then 
     msRes = msgbox("Save changes to previous tab?", YesNo, "MyApp") 
     if msRes = MessageResult.Yes Then 
      SaveMethod() 
     End If 
End If 

を、あなたはブール値を扱うようになった、とあれば制御ましたイベントハンドラ内の機能は、火災やないし、その後、戻って前のタブにこれらの線に沿って何かを選択したタブを設定します:

If myGlobalTabFireBoolean Then 
    Dim msRes as MessageResult = MessageResult.No 
    If mySwitchedFromTab.IsDirty Then 
     msRes = msgbox("Save changes to previous tab?", YesNoCancel, "MyApp") 
     Select Case msRes 
      Case MessageResult.Yes 
       SaveMethod() 
      Case MessageResult.Cancel 
       myGlobalTabFireBoolean = False 
       myTabContainer.SelectedItem = myPreviousTab 
      Case Else    
       ' Do Nothing 
     End If 
    End If 
Else 
    myglobalTabFireBoolean = True 
End IF 

は今、これらはそれとして、この種の機能を実行するための唯一の方法ではありません個人的なコーディングスタイルに依存し、evあなたのタブ項目をどのように構築するか(タブビーンのタブをより詳細に構築して、標準的な動作を上書きして、FirefoxやIEのタブのように機能させることができます。中マウスボタンをクリックして閉じる)。

+0

これは私が念頭に置いていた解決策の1つです。私はカスタムタブを使用していません、私はWPF(System.Windows.Controls)で標準のTabControlを使用しています。これは私が「クリック検出」の動作を必要とする唯一の場所であるため、このためにカスタムコントロールを作成する必要はありません。 – Alexandra

0

WPFを使用している場合は何があるのか​​わかりませんが、.NETではTabControlオブジェクトに「SelectedIndexChanged」イベントがあります。あなたはデザイナーにいると仮定すると、ちょうどそのイベントにしたい方法を添付して、あなたは黄金だ、またはコードを介したようなもので:

this.rootTabControl.SelectedIndexChanged += new System.EventHandler(this.myHandlerHere); 

しかし、それは全く違いますので、もし私は、WPFを知りません、あなたは自分のものですが、私はそれが非常に似ていると思います。

関連する問題