博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wpf combobox
阅读量:5117 次
发布时间:2019-06-13

本文共 1134 字,大约阅读时间需要 3 分钟。

1、在使用vs2008的wpf的时候,combobox用到的会很多,估计大家都遇到过Combobox控件的文本改变事件的问题

    在Combobox控件中本身并没有TextChanged事件,所以对文本改变事件没有办法处理。我就遇到过这样的问题。

    在网上查资料也没有这方面的资料 只碰到有个说视觉树中存在TextChanged事件,不明白视觉树是什么意思,后来还是无意中发现Combobox还是能变相的实现TextChanged事件,
具体的例子如下

在Xaml文件里 添加如下语句  TextBoxBase.TextChanged="txb_StaffID_TextChanged"

这样Combobox就有了文本的改变事件了

2、使用Combobox控件是能得到TextChanged事件了,但是这时还会存在另外一个问题,也比较麻烦,那就是控制Combobox文本输入的长度问题,利用Combobox的TextChanged事件是能控制长度,但是当判断完后Combobox的光标会跑到第一位了 这时候再输入的时候就会改变原有的值,这个也是个麻烦事,但是后来也是通过另外的方法实现了

具体例子如下:txb_StaffID是Combobox控件

private void txb_StaffID_TextChanged(object sender, TextChangedEventArgs e)

        {
            if (PublicMethodBLL.StrLength(txb_StaffID.Text) > 20)
            {
                txb_StaffID.Text = PublicMethodBLL.StrCut(txb_StaffID.Text, 21);
                TextBox textBox = (TextBox)GetDescendantByType(this.txb_StaffID, typeof(TextBox));
                textBox.SelectionStart = 20;  //或者写成txb_StaffID.Text.Length
                textBox.SelectionLength = 0;

            }           

        }

其中有几个方法 StrLength()方法是得到字符串的真实长度(汉字两个字节),StrCut()方法是截取字符的方法(包含汉字的两个字节),最关键的是下面这句

TextBox textBox = (TextBox)GetDescendantByType(this.txb_StaffID, peof(TextBox));
只有有这句话 Combobox才能真正的控制光标的位置

转载于:https://www.cnblogs.com/trenail/p/4018258.html

你可能感兴趣的文章
【架构】Linux的架构(architecture)
查看>>
从解决Cocos2dx-2.x arm64 Crash 来看C的奇技淫巧
查看>>
ASM 图解
查看>>
Java快捷键
查看>>
Wasserstein距离 和 Lipschitz连续
查看>>
Python Day14 JavaScript
查看>>
关于java Date和时区的问题 (转)
查看>>
通过表单展示不一样的页面(input对象)
查看>>
Windows 7 SP1 加速了系统 还是 SQL 2008拖慢了系统 ? SQL Server 2012 初体验
查看>>
centos 开机自启设定:
查看>>
组件基础(插槽slot)—Vue学习笔记
查看>>
Gensim进阶教程:训练word2vec与doc2vec模型
查看>>
插头DP小结
查看>>
Springboot通过cors解决跨域问题(解决spring security oath2的/oauth/token跨域问题)
查看>>
博客开通了
查看>>
D. Jzzhu and Cities
查看>>
UVA1279,Asteroid Rangers,星际游击队,好烦的最小生成树
查看>>
常见Python爬虫工具总结
查看>>
1724ROADS
查看>>
圆与多边形相交面积
查看>>