C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: WPF TabControl タブ切り替えキャンセル


(過去ログ 100 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■59890 / inTopicNo.1)  WPF TabControl タブ切り替えキャンセル
  
□投稿者/ ぽじー (1回)-(2011/06/09(Thu) 19:40:50)

分類:[.NET 全般] 

[VS2010 WPF]
こんにちは。

WPFを最近はじめたのですが、TabControlでつまっています。
タブを切り替えたときに、チェックをし、NGのときは切り替え前のタブに戻るように
実装したいのですが、うまく動きません。

具体的には、タブを切り替えたときに、
問い合わせのメッセージを表示し、

キャンセルする(Yesボタン)→切り替え前のタブに移動
キャンセルしない(Noボタン)→タブインデックスを覚えておく

という実装です。
1回目のキャンセルはうまくいくのですが、2回目は、切り替えイベントが発生しません。
2パターンで試してみたのですが、どちらもうまくいきませんでした。
(Windows.Formsなら、Deselectingイベントでできそうなのですが・・・)

すみませんがご教授願えないでしょうか。

よろしくお願いいたします。

■■パターン@■■
bool initialize = false;
int lastIdx = 0;
private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if ( true == initialize && MessageBoxResult.Yes == MessageBox.Show("タブ切り替えキャンセル", "問い合わせ", MessageBoxButton.YesNo ))
{
tabControl.SelectionChanged -= tabControl_SelectionChanged;
tabControl.SelectedIndex = lastIdx;
tabControl.SelectionChanged += tabControl_SelectionChanged;
}
lastIdx = tabControl3.SelectedIndex;
}

private void Window_SourceInitialized(object sender, EventArgs e)
{
initialize = true;
}

■■パターンA■■
bool initialize = false;
int lastIdx = 0;
bool chkFlag = false;
private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if ( true == chkFlag )
{
return;
}

chkFlag = true;

if ( true == initialize && MessageBoxResult.Yes == MessageBox.Show("キャンセル", "問い合わせ", MessageBoxButton.YesNo ))
{
// tabControl.SelectionChanged -= tabControl_SelectionChanged;
tabControl.SelectedIndex = lastIdx;
// tabControl.SelectionChanged += tabControl_SelectionChanged;
}
lastIdx = tabControl.SelectedIndex;

chkFlag = false;
}

private void Window_SourceInitialized(object sender, EventArgs e)
{
initialize = true;
}



引用返信 編集キー/
■59892 / inTopicNo.2)  Re[1]: WPF TabControl タブ切り替えキャンセル
□投稿者/ ぽじー (2回)-(2011/06/09(Thu) 19:56:57)
> 1回目のキャンセルはうまくいくのですが、2回目は、切り替えイベントが発生しません。
イベントが発生しない状態で、ウィンドウを最小化し、通常に戻すと切り替えイベントが発生しました。

よくわかりません・・・

すみませんがよろしくお願いいたします。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -