首页 > 其他分享 >WPF Combobox屏蔽按上下键切换选项

WPF Combobox屏蔽按上下键切换选项

时间:2024-12-27 14:10:13浏览次数:6  
标签:Combobox 上下 屏蔽 切换 Key combobox WPF textbox

最近在项目中有一个需求是Combobox可以进行编辑,类似于多行文本框一样进行编辑,在编辑的过程中可能需要上下键切换当前的行,但是combobox的上下键对应了切换选项,所以需要屏蔽combobox的上下键切换功能,并且加上文本框换行的功能

combobox自身的previewkeydown事件是无法捕获到上下键的

然后我有一个新的方案是在combobox外包一个stackpanel

stackpanel注册一个previewkeydown事件

xaml代码如下:多余的就删掉了

核心是这个combobox自身的previewkeydown是为了按回车换行

 <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" PreviewKeyDown="Window_PreviewKeyDown">
     <ComboBox
           IsEditable="True"
           PreviewKeyDown="ComboBox_PreviewKeyDown">
     </ComboBox>
 </StackPanel>
        private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Source is ComboBox combobox && e.OriginalSource is TextBox textbox)
            {
                string[] strs = textbox.Text.Split('\n');
                if (e.Key == Key.Up)
                {
                    e.Handled = true;

                    SetIndex(textbox, true);

                }
                else if (e.Key == Key.Down)
                {
                    e.Handled = true;

                    SetIndex(textbox, false);
                }
            }
        }

setindex 为设置textbox的光标位置,具体就不展示了。

标签:Combobox,上下,屏蔽,切换,Key,combobox,WPF,textbox
From: https://www.cnblogs.com/HRDK-CADeveloper/p/18635569

相关文章

  • 解决WPF弹出子窗体如何设置停靠在主窗体的边缘
    窗体代码思路获取主窗体的位置坐标,根据主窗体的位置坐标和长宽尺寸计算子窗体的实际位置,并赋值给子窗体的Top和Left属性。publicpartialclassPromptDialogBox:Window{///<summary>///关闭计时器///</summary>privateDispatcherTimer_timerCl......
  • C# WPF PrintDialog 打印(3)
    前面https://www.cnblogs.com/yinyu5/p/18634080使用PrintDocument方法打印了Canvas,这里打印下面的DataGrid列表内容:这里DataGrid的数据源是DataTable,后台代码:1privatevoidPrintDocument_DataTable_Method(stringTitle,DataTabledataTable)2{3......
  • C# WPF PrintDialog 打印(2)
    前面https://www.cnblogs.com/yinyu5/p/18633910使用PrintVisual方法只打印了可见部分的元素,所以这里改为使用PrintDocument方法来进行打印。需要引用System.Printing.dll界面代码:1<Windowx:Class="WpfApp123.MainWindow"2xmlns="http://schemas.microsoft.com......
  • C# WPF PrintDialog 打印(1)
    参考“WPF打印实例”的文章:https://www.cnblogs.com/gnielee/archive/2010/07/02/wpf-print-sample.html测试程序: 首先打印Canvas效果: 看起来似乎没问题,但是调整窗体尺寸遮挡部分元素:再打印Canvas效果: 可以发现PrintVisual方法只打印了可见部分的元素,测试打印DataG......
  • WPF TabControl 去掉鼠标悬浮效果
     1.资源<Window.Resources><Stylex:Key="TabStyle"TargetType="TabItem"><SetterProperty="TextBlock.FontSize"Value="12"/><SetterProperty="Template">......
  • WPF 构建属性结构
    在WPF中构建树形结构首先构建一个属性结构的类,在这个类中,其中NodeId、NodeName、ParentId是最重要的3个属性,是构建树形结构的关键.另外一个比较重要的属性就是ChildNodes,它是一个树形集合类对象,该属性存储子树,是构建树形结构的必要条件。其他都是附加属性,如Icon用于存储图标......
  • WPF TileMode ViewPort ImageBrush VisualBrush
    <Windowx:Class="WpfApp98.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • WPF应用启动时,检测触摸失效的几种方式
    在开发OPS项目,发现插拔式的OPS在切换系统、开关机、重启,会时不时出现部分WPF开机自启的应用触摸失效的问题。而且出现问题的应用都是全屏窗口应用。用snoop附加上去,没有Touch和Styulus的的相关事件,但是鼠标事件是能触发的,而且系统的其他的应用软件都可以触摸。这就是我们常见......
  • WPF LogicalTree VisualTree
    <Windowx:Class="WpfApp94.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • DevExpress WPF中文教程:Grid - 如何移动和调整列大小?(二)
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......