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

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回答

1706閲覧

キーボードイベントが発生しない

ghf.liza

総合スコア38

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クリップ

投稿2022/05/13 08:13

前提

XAMLでFrameを使って画面遷移を実装しています。
※下のコードで画面遷移をしています。

XAML

1this.frame.Navigate(new HogePage(), this);

発生している問題

Page_MouseDown イベントは、クリックするとちゃんと発生するのですが、
Page_KeyDown が、キーを押しても全く発生しません。

該当のソースコード

XAML

1<Page x:Class="Hoge.HogePage" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 4 5 <UserControl> 6 <Grid MouseDown="Page_MouseDown" 7 KeyDown="Page_KeyDown" 8 x:Name="Grid_1"> 9 <!---処理いろいろ---> 10 </Grid> 11 </UserControl> 12</Page>

C#

1using System.Windows; 2 3namespace Hoge 4{ 5 /// <summary> 6 /// HogePage.xaml の相互作用ロジック 7 /// </summary> 8 public partial class HogePage : Page 9 { 10 /// <summary> 11 /// コントラクタ 12 /// </summary> 13 public PlayingPage() 14 { 15 InitializeComponent(); 16 } 17 18 /// <summary> 19 /// マウスが押されたときの処理 20 /// </summary> 21 private void Page_MouseDown(object sender, MouseButtonEventArgs e) 22 { 23 // 処理 24 } 25 26 /// <summary> 27 /// キーが押されたときの処理 28 /// </summary> 29 private void Page_KeyDown(object sender, KeyEventArgs e) 30 { 31 // イベントが呼ばれない 32 } 33 } 34}
TN8001👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

「処理いろいろ」の内容によっては来ることもあると思いますけど、提示されていないので何とも言えません。
提示内容で来るようにするなら、こんなんですかね?

xml

1<Page 2 x:Class="Qlwqwvqguin0yhp.HogePage" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 FocusManager.FocusedElement="{Binding ElementName=Grid_1}"> 6 <UserControl> 7 <Grid 8 x:Name="Grid_1" 9 Background="Snow" 10 Focusable="True" 11 KeyDown="Page_KeyDown" 12 MouseDown="Page_MouseDown" /> 13 </UserControl> 14</Page>

フォーカスの概要 - WPF .NET Framework | Microsoft Docs

UIElement.Focusable プロパティ (System.Windows) | Microsoft Docs

FocusManager.FocusedElement 添付プロパティ (System.Windows.Input) | Microsoft Docs


なんでUserControlで挟んでいるんでしょう?(こういう使い方は初めて見ました)

投稿2022/05/13 11:40

編集2023/07/30 08:19
TN8001

総合スコア9317

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

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

ghf.liza

2022/05/13 13:30

ご教示いただきありがとうございます。 無事解決しました。
cure_fontaine

2022/06/20 03:39

どこに原因があったのか、どう改善したら動作したのか教えてくれませんか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問