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

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

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

Re[5]: WPF タブコントロールイベント


(過去ログ 83 を表示中)

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

■48986 / inTopicNo.1)  WPF タブコントロールイベント
  
□投稿者/ WPF初心者 (5回)-(2010/04/19(Mon) 20:42:59)

分類:[C#] 

C#
VS2008

簡単そうな質問で大変申し訳ないのですが、
WPFのタブコントロールのタブ(Header)が変更された時のイベントがわかりません。

タブ変更イベントのようなものを探したのですが、
見当たらず、他に色々と試してみたのですが、
余計なイベントまで拾ってしまい、ハマってしまっています。

タブ変更イベントがあるのでしたら、
教えていただけないでしょうか?
よろしくお願い致します。



引用返信 編集キー/
■48987 / inTopicNo.2)  Re[1]: WPF タブコントロールイベント
□投稿者/ Hongliang (606回)-(2010/04/19(Mon) 20:56:23)
SelectionChanged イベントのことでしょうか?
引用返信 編集キー/
■48988 / inTopicNo.3)  Re[2]: WPF タブコントロールイベント
□投稿者/ WPF初心者 (6回)-(2010/04/19(Mon) 21:09:18)
さっそくの返信ありがとうございます。

SelectionChangedだと
タブ変更以外のイベントを拾ってしまいます。

チェックかければSelectionChangedでいいとは思いますが、
単純に、タブを変更した時のみのイベントがあればいいなと思いまして…


引用返信 編集キー/
■48996 / inTopicNo.4)  Re[3]: WPF タブコントロールイベント
□投稿者/ かずき (58回)-(2010/04/20(Tue) 10:10:32)
かずき さんの Web サイト
No48988 (WPF初心者 さん) に返信
> さっそくの返信ありがとうございます。
>
> SelectionChangedだと
> タブ変更以外のイベントを拾ってしまいます。
VC# 2010 Express Editionで試した範囲だとタブの選択を変更した
タイミングでしかSelectionChangedが発生しませんでした。
(全パターン試したわけじゃないのですがウィンドウのアクティブ化や
 タブのアイテムの追加では発生しませんでした)

興味があるので、どういうときにSelectionChangedが発生するのかを
教えていただけないでしょうか
引用返信 編集キー/
■49035 / inTopicNo.5)  Re[4]: WPF タブコントロールイベント
□投稿者/ WPF初心者 (7回)-(2010/04/20(Tue) 19:48:50)
かずき さん

お返事が遅くなってしまい
大変申し訳ありません。

タブアイテムの中にコントロール(リスト/ボタン/テキストボックス)がある場合ですね。
その値を変更したらイベントを拾ってしまいますね。

制御が多少複雑なので、
その辺りのコントロールを拾ってしまうと、
他のタブを選択すると、2回イベントが走ってしまうというバグが起きています。

まだ対応していないのですが、
気づかないような細かいバグが嫌なので、
ドンピシャなイベントがあればそれを使用したいですね。

わざわざ試してくださいまして
ありがとうございます。
引用返信 編集キー/
■49036 / inTopicNo.6)  Re[5]: WPF タブコントロールイベント
□投稿者/ Hongliang (608回)-(2010/04/20(Tue) 20:42:24)
あー、なるほど。子要素である ListBox の SelectionChanged がルーティング(バブル)されて親の SelectionChanged が発生しているわけですか。
// TabControl.ContentTemplate で定義したコントロールは全てのタブで共有され、値だけ書き換わります。で、値が変わると ListBox 等の SelectionChanged も発生することになります。
// ですのでタブの切り替え前後で ListBox の値が同じであれば、ListBox 分の SelectionChanged は発生しません。

タブの切り替えは SelectionChanged です。これは間違いありません。これが「ドンピシャなイベント」なんです。
子要素のルーティングイベントかどうかは、イベントの引数 e の OriginalSource が、目的の TabControl と等しいかどうかで判断するようにして下さい。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -