質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

6249閲覧

WPF 継承コントロールのフォーカス判定について

noppuku

総合スコア13

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2016/12/20 01:06

###前提・実現したいこと
現在TextBoxを継承したコントロールを作成しているのですが、作った
コントロールに対してTabキーでフォーカス移動すると、何故かフォーカスが
作ったコントロールの外側に当たり、次にもう一回押すとテキストボックスの内部に
フォーカスが当たる(文字が打てる状態)という風に2回フォーカスの判定があるような
状態になっています。
これを内部にフォーカスが当たる1回だけに直したいです。

###該当のソースコード

C#

1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Linq; 5using System.Text; 6using System.Threading.Tasks; 7using System.Windows; 8using System.Windows.Controls; 9using System.Windows.Data; 10using System.Windows.Documents; 11using System.Windows.Input; 12using System.Windows.Media; 13using System.Windows.Media.Imaging; 14using System.Windows.Navigation; 15using System.Windows.Shapes; 16 17namespace WpfCustomControlLibrary2 18{ 19 public class CustomControl1 : TextBox 20 { 21 static CustomControl1() 22 { 23 DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadat a(typeof(CustomControl1))); 24 } 25} 26 27XAML 28<ResourceDictionary 29 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 30 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 31 xmlns:local="clr-namespace:WpfCustomControlLibrary2"> 32 33 <Style TargetType="{x:Type local:CustomControl1}"> 34 <Setter Property="Template"> 35 <Setter.Value> 36 <ControlTemplate TargetType="{x:Type local:CustomControl1}"> 37 <TextBox x:Name="Textbox" Height="{TemplateBinding Height}" 38 Width="{TemplateBinding Width}" 39 Text="{TemplateBinding Text}" 40 /> 41 </Border> 42 </ControlTemplate> 43 </Setter.Value> 44 </Setter> 45 </Style> 46</ResourceDictionary> 47 48

###試したこと
上記のソースを実際にビルドしコントロールを使用してみると
Tabキーを押した際に2回フォーカスの判定が出てしまいます。

###補足情報(言語/FW/ツール等のバージョンなど)
環境はVisualStudio2013proでWPFカスタムコントロールライブラリから作成しております。

hghgg0574👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

フォーカスをTABで移動するとき、画面上のフォーカス可能なコントロールに対してTabIndexの順番にフォーカスが遷移する仕組みになっていると思います。カスタムコントロール(の一番親)もフォーカス可能なものとなっているためこのような動作になるのだと思います。

フォーカスを制御したい場合はKeyboardNavigationを使うとよいというのが以下の記事にありました。参考になるのではないでしょうか。

WPFでTab オーダーを細かく設定する方法は?

投稿2016/12/20 16:35

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問