zoukankan      html  css  js  c++  java
  • wpf combobox

    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才能真正的控制光标的位置

  • 相关阅读:
    15款精美的 WordPress 电子商务网站模板
    15套免费的扁平化界面设计素材【免费下载】
    35幅使用小图片组成的创意插图作品 【上篇】
    sqlserver2014两台不同服务器上数据库同步
    C++ Reflection Library
    美国的包容主要体现在接受移民,那么,中国的包容主要体现在哪里呢?答案就是资本
    mysql主从复制
    Kubernetes+Istio
    Net异步编程
    研发的困境----DEVOPS
  • 原文地址:https://www.cnblogs.com/trenail/p/4018258.html
Copyright © 2011-2022 走看看