diff --git a/WPF基础.sln b/WPF基础.sln index a71ec82..cc425b3 100644 --- a/WPF基础.sln +++ b/WPF基础.sln @@ -60,6 +60,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPF路由事件-3-冒泡路 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPF路由事件-4-生命周期", "WPF路由事件-4-生命周期\WPF路由事件-4-生命周期.csproj", "{B5A965AA-9C4C-4EB3-8515-DF03F948EC14}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPF路由事件-5-处理按键事件", "WPF路由事件-5-处理按键事件\WPF路由事件-5-处理按键事件.csproj", "{DD14128A-A563-48B8-9ED2-201C0553B8D2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -186,5 +188,9 @@ Global {B5A965AA-9C4C-4EB3-8515-DF03F948EC14}.Debug|Any CPU.Build.0 = Debug|Any CPU {B5A965AA-9C4C-4EB3-8515-DF03F948EC14}.Release|Any CPU.ActiveCfg = Release|Any CPU {B5A965AA-9C4C-4EB3-8515-DF03F948EC14}.Release|Any CPU.Build.0 = Release|Any CPU + {DD14128A-A563-48B8-9ED2-201C0553B8D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD14128A-A563-48B8-9ED2-201C0553B8D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD14128A-A563-48B8-9ED2-201C0553B8D2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD14128A-A563-48B8-9ED2-201C0553B8D2}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/WPF路由事件-5-处理按键事件/App.xaml b/WPF路由事件-5-处理按键事件/App.xaml new file mode 100644 index 0000000..202c5ec --- /dev/null +++ b/WPF路由事件-5-处理按键事件/App.xaml @@ -0,0 +1,9 @@ + + + + + diff --git a/WPF路由事件-5-处理按键事件/App.xaml.cs b/WPF路由事件-5-处理按键事件/App.xaml.cs new file mode 100644 index 0000000..5965483 --- /dev/null +++ b/WPF路由事件-5-处理按键事件/App.xaml.cs @@ -0,0 +1,12 @@ +using System.Configuration; +using System.Data; +using System.Windows; + +namespace WPF路由事件_5_处理按键事件; + +/// +/// Interaction logic for App.xaml +/// +public partial class App : Application +{ +} \ No newline at end of file diff --git a/WPF路由事件-5-处理按键事件/AssemblyInfo.cs b/WPF路由事件-5-处理按键事件/AssemblyInfo.cs new file mode 100644 index 0000000..4a05c7d --- /dev/null +++ b/WPF路由事件-5-处理按键事件/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] \ No newline at end of file diff --git a/WPF路由事件-5-处理按键事件/MainWindow.xaml b/WPF路由事件-5-处理按键事件/MainWindow.xaml new file mode 100644 index 0000000..d5a39c9 --- /dev/null +++ b/WPF路由事件-5-处理按键事件/MainWindow.xaml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + 忽略长按key + + + + + \ No newline at end of file diff --git a/WPF路由事件-5-处理按键事件/MainWindow.xaml.cs b/WPF路由事件-5-处理按键事件/MainWindow.xaml.cs new file mode 100644 index 0000000..d8928c4 --- /dev/null +++ b/WPF路由事件-5-处理按键事件/MainWindow.xaml.cs @@ -0,0 +1,33 @@ +using System.Windows; +using System.Windows.Input; + +namespace WPF路由事件_5_处理按键事件; + +/// +/// Interaction logic for MainWindow.xaml +/// +public partial class MainWindow : Window +{ + public MainWindow() + { + InitializeComponent(); + } + + private void UIElement_OnPreviewKeyDown(object sender, KeyEventArgs e) + { + // 忽略键盘长按结果 + if ((bool)CheckBox.IsChecked! && e.IsRepeat) return; + + ListBox.Items.Add($"Event:{e.RoutedEvent} Key: {e.Key}"); + } + + private void ButtonBase_OnClick(object sender, RoutedEventArgs e) + { + ListBox.Items.Clear(); + } + + private void UIElement_OnPreviewTextInput(object sender, TextCompositionEventArgs e) + { + Console.WriteLine(e.Text); + } +} \ No newline at end of file diff --git a/WPF路由事件-5-处理按键事件/WPF路由事件-5-处理按键事件.csproj b/WPF路由事件-5-处理按键事件/WPF路由事件-5-处理按键事件.csproj new file mode 100644 index 0000000..64478ea --- /dev/null +++ b/WPF路由事件-5-处理按键事件/WPF路由事件-5-处理按键事件.csproj @@ -0,0 +1,12 @@ + + + + WinExe + net8.0-windows + WPF路由事件_5_处理按键事件 + enable + enable + true + + +