精华内容
下载资源
问答
  • 主要为大家详细介绍了WPF TextBox实现按字节长度限制输入功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • WPF绑定Datagrid与Textbox等,包括自动通知UI更新显示;新建数据类,datagrid绑定到该类的数据,实现双向更新与UI更新显示。
  • 主要为大家详细介绍了WPF TextBox水印效果的制作方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • wpf TextBox 自定义菜单

    2015-05-28 15:10:09
    textBox1.ContextMenu = cont; for (int i = 0; i ; i++) { MenuItem item = (MenuItem)cont.Items[i]; item.Click += delegate(object sender,RoutedEventArgs e) { MessageBox.Show(item.Header.ToString()...
  • Wpf TextBox自动补全

    2017-10-21 08:43:41
    该案例主要实现TextBox控件在输入时,自动给出若干提示信息,提供自动补全功能
  • WPF TextBox笔刷特效

    2019-07-16 20:18:29
    WPF 中又为TextBox 添加了两种新笔刷特效:Selection 、Caret ,通过这两种特效使得TextBox 更加美观。 默认情况下TextBox 呈现出以下效果,字体为黑色、选区为蓝色、光标为黑色: <TextBox BorderBrush="Gray...

    TextBox 控件是我们开发过程中必不可少的组件,它可以使应用程序方便的与用户进行文字交互。在WPF 中又为TextBox 添加了两种新笔刷特效:Selection 、Caret ,通过这两种特效使得TextBox 更加美观。
    默认情况下TextBox 呈现出以下效果,字体为黑色、选区为蓝色、光标为黑色:

    <TextBox BorderBrush="Gray" BorderThickness="3" Width="200" Height="30" />
    

    效果如下:
    在这里插入图片描述
    在这里插入图片描述

    1. 字体颜色(Foreground)与选区颜色(SelectionBrush):

      <TextBox BorderBrush="Gray" BorderThickness="3" Width="200" Height="30" 
      Foreground="Red" SelectionBrush="Green"/>
      

      效果如下:

    在这里插入图片描述
    2. 选区透明度(SelectionOpacity):

    <TextBox BorderBrush="Gray" BorderThickness="3" Width="200" Height="30" 
    Foreground="Red" SelectionBrush="Green" SelectionOpacity="1"/>
    

    效果如下:
    在这里插入图片描述
    3. 渐变选区效果:

    <TextBox BorderBrush="Gray" BorderThickness="3" Width="200" Height="30">
        <TextBox.SelectionBrush>
            <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                <GradientStop Color="Red" Offset="0" />
                <GradientStop Color="Yellow" Offset="0.2" />
                <GradientStop Color="Blue" Offset="0.4" />
                <GradientStop Color="Green" Offset="0.6" />
                <GradientStop Color="Orchid" Offset="0.8" />
                <GradientStop Color="Pink" Offset="1" />
            </LinearGradientBrush>
        </TextBox.SelectionBrush>
    </TextBox>
    

    效果如下:
    在这里插入图片描述

    Caret Brush 属性:
    Caret 笔刷可以用来修改光标颜色:

    <TextBox BorderBrush="Gray" BorderThickness="3" Width="200" Height="30" CaretBrush="Red" />
    

    效果如下:
    在这里插入图片描述

    展开全文
  • WPF 设置TextBox的输入法

    千次阅读 2019-09-30 14:08:06
    使用WPF做Windows客户端开发时,如果需要控制输入框的输入语言,本文为读者介绍了两个控制输入模式的类,InputLanguageManager和InputMethod。用于控制输入法的语言,以及限制输入内容。

    一、InputLanguageManager类

    这个类可以控制微软输入法的语言的切换。
    很简单只有两个附加属性:
    InputLanguageRestoreInputLanguage使用起来非常简单。
    控制输入语言的首选项,以及光标离开控件时输入语言是否恢复。

    1.1 InputLanguage(控制输入法的首选语言)

    该附加属性用于控制输入语言的首选项。
    如果你在你的TextBox上加入InputLanguageManager.InputLanguage,那么当你的光标进入TextBox时,会自动切换至你设置的语言。如下:

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <WrapPanel Grid.Row="0">
            <Label Content="Language1:" />
            <TextBox
                Width="180"
                Height="30"
                InputLanguageManager.InputLanguage="en-US" />
        </WrapPanel>
        <WrapPanel Grid.Row="1">
            <Label Content="Language2:" />
            <TextBox
                Width="180"
                Height="30"
                InputLanguageManager.InputLanguage="zh-CN" />
        </WrapPanel>
    </Grid>
    

    如上,光标移动到第一个TextBox时,会切换到英语输入法,移动到第二个TextBox时,会切换到中文输入法。前提是你的系统安装了这两种语言的输入法。嗯,如果你是家庭版的win10,很抱歉,它只支持一种语言,请升级至专业版。

    如何知道自己系统有哪些输入法可以选择呢?
    可以在后台输入InputLanguageManager.Current.AvailableInputLanguages;
    该属性返回当前系统可以使用的输入法语言的枚举集合。

    var languages= InputLanguageManager.Current.AvailableInputLanguages;
    foreach (var languagein languages)
    {
        Console.WriteLine(language);
    }
    

    1.2 RestoreInputLanguage(光标离开时是否恢复语言)

    为TextBox设置InputLanguageManager.RestoreInputLanguage该附加属性后,光标移出TextBox时,会恢复之前的语言。该属性只有TrueFalse两个值可选。

    二、InputMethod类

    InputMethod类有6个附加属性,使用该类可以控制输入模式,例如设置是否启用输入法,限制输入内容等。

    2.1 PreferredImeState(设置输入法状态)

    InputMethod.PreferredImeState该附加属性可以设置输入法的首选状态。有三个枚举值:On、Off、DoNotCare。设为On时,启用输入法。设为Off时,关闭输入转换。DoNotCare时,无效果。
    关闭输入转换后只能进行英文数字符号的输入,即无法将字母转换成其他语言。可以手动恢复转换模式。

    <Grid>
    	<Grid.RowDefinitions>
    		<RowDefinition
    			Height="*" />
    		<RowDefinition
    			Height="*" />
    	</Grid.RowDefinitions>
    	<WrapPanel
    		Grid.Row="0">
    		<Label
    			Content="Language1:" />
    		<TextBox
    			Width="180"
    			Height="30"
    			InputMethod.PreferredImeState="On"
    			InputLanguageManager.InputLanguage="zh-CN" />
    	</WrapPanel>
    	<WrapPanel
    		Grid.Row="1">
    		<Label
    			Content="Language2:" />
    		<TextBox
    			Width="180"
    			Height="30"
    			InputMethod.PreferredImeState="Off"
    			InputLanguageManager.InputLanguage="zh-CN" />
    	</WrapPanel>
    </Grid>
    

    2.2 IsInputMethodEnabled(是否启用输入法)

    InputMethod.IsInputMethodEnabled该属性控制是否启用输入法,如果设置为False则输入法无效,无法手动启动

    <Grid>
    	<Grid.RowDefinitions>
    		<RowDefinition
    			Height="*" />
    		<RowDefinition
    			Height="*" />
    	</Grid.RowDefinitions>
    	<WrapPanel
    		Grid.Row="0">
    		<Label
    			Content="Language1:" />
    		<TextBox
    			Width="180"
    			Height="30"
    			InputMethod.IsInputMethodEnabled="True"
    			InputLanguageManager.InputLanguage="zh-CN" />
    	</WrapPanel>
    	<WrapPanel
    		Grid.Row="1">
    		<Label
    			Content="Language2:" />
    		<TextBox
    			Width="180"
    			Height="30"
    			InputMethod.IsInputMethodEnabled="False"
    			InputLanguageManager.InputLanguage="zh-CN" />
    	</WrapPanel>
    </Grid>
    

    2.3 PreferredImeConversionMode(设置转换模式)

    InputMethod.PreferredImeConversionMode该属性可以设置输入法的转换模式,一共有11个枚举值可以选择。

    枚举值描述
    Alphanumeric输入法使用字母数字转换模式。
    CharCode输入法使用字符代码转换模式。
    DoNotCare输入法不考虑使用何种输入转换方法;实际的转换方法不确定。
    Eudc输入法使用 EUDC(最终用户定义的字符)转换模式。
    Fixed输入法使用固定转换模式。
    FullShape输入法使用全形转换模式。
    Katakana输入法使用片假名转换模式。
    Native输入法使用本机字符(平假名、朝鲜文和中文)转换模式。
    NoConversion输入法不会执行任何输入转换。
    Roman输入法使用罗马字符转换模式。
    Symbol输入法使用符号转换模式。
    <Grid>
    	<Grid.RowDefinitions>
    		<RowDefinition
    			Height="*" />
    		<RowDefinition
    			Height="*" />
    	</Grid.RowDefinitions>
    	<WrapPanel
    		Grid.Row="0">
    		<Label
    			Content="Language1:" />
    		<TextBox
    			Width="180"
    			Height="30"
    			InputMethod.IsInputMethodEnabled="True"
    			InputLanguageManager.InputLanguage="zh-CN" />
    	</WrapPanel>
    	<WrapPanel
    		Grid.Row="1">
    		<Label
    			Content="Language2:" />
    		<TextBox
    			Width="180"
    			Height="30"
    			InputMethod.IsInputMethodEnabled="False"
    			InputLanguageManager.InputLanguage="zh-CN" />
    	</WrapPanel>
    </Grid>
    

    我个人经常使用这个属性,这个属性当你光标移入TextBox时,可以切换转换模式,配合InputLanguageManager类可以准确切换至日语输入法,并使用平假名的转换模式。在工作中经常使用。

    2.4 PreferredImeSentenceMode(设置输入法的联想功能)

    InputMethod.PreferredImeSentenceMode预设句子模式,即选择智能联想模式。就是输入时会猜测你想输入的单词然后给你几个候选单词。如果禁用会导致你的输入法没有智能联想功能。
    有7种枚举值可以选择。

    枚举值描述
    Automatic该输入法自动使用句型转换方法。
    Conversation该输入法使用对话样式句型转换。
    DoNotCare该输入法不关心使用了哪个句型转换方法;实际的句型转换模式不确定。
    None该输入法不执行任何句型转换。
    PhrasePrediction该输入法使用词组联想句型转换。
    PluralClause该输入法使用复数从句句型转换。
    SingleConversion该输入法使用单个日文汉字/朝鲜文汉字句型转换。

    2.5 InputScope(设置输入范围)

    InputMethod.InputScope设置输入法输入的方式的输入范围名称。使用该属性可以限制输入内容,有大量选项供开发者选择。这里附上枚举值介绍的网址枚举类:InputScopeNameValue
    内容较多,就不在这里细说,有需要的读者可以自己前往查阅资料。

    2.6 IsInputMethodSuspended(是否挂起输入法)

    InputMethod.IsInputMethodSuspended设置该属性以决定是否挂起输入法。

    对你有帮助吗?点个赞吧~

    展开全文
  • wpf 自带的密码输入框在触屏上无法自动唤出触控面板,因此修改了一个textbox的密码输入框
  • WPF TextBox 限定输入

    2019-08-15 21:02:42
    步骤一:禁用输入法  <Window xmlns:input="clr-namespace:System.Windows.Input;assembly=...TextBox input:InputMethod.IsInputMethodEnabled="False"/>  </Window> 步骤二:监测 T...

    步骤一:禁用输入法

      <Window xmlns:input="clr-namespace:System.Windows.Input;assembly=PresentationCore">

        <TextBox input:InputMethod.IsInputMethodEnabled="False"/>

      </Window>

    步骤二:监测 TextBox 的 PreviewTextInput事件   

            private void TextBox_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
            {   
                //Regex re = new Regex("[^A-F0-9]");  // 只允许输入大写字母A~F和数字0~9

                string str = tbox.Text;
                bool isNumber = System.Text.RegularExpressions.Regex.IsMatch(str, @"^[1-9]\d*$");// 只允许输入大于0的数字
                if (!isNumber)
                {
                    tbox.Text = null;
                    //tbxPage.Text = "1";
                    return;// 不是正整数,清空输入.
                }
            }

    展开全文
  • 动态生成textbox控件

    2015-02-15 12:27:41
    可以动态生成控件并进行排列,代码以动态生成TEXTbox为例,本人也是找了很多资料,这种方式简单又实用,如要动态生成各种控件并进行排列,可以做为参考
  • /// /// 输入法开关 /// /// TextBox对象 /// 开关 public void Set_ImeEnable(TextBox obj, bool enable) { InputMethod.SetIsInputMethodEnabled(obj, enable); } public void Input_KeyDown(object sender, ...

    限制较为严格,比如整数或小数,第一位输入“0”,则后面不能输入,不会出现“001”“0001.11”等;
    输入页码严格按照“3-7,9,11-13”,样式,不会出现误输入,取得结果也会按顺序、去重输出到list里面。

    可以设置:
    All = 0, // 任意
    Integer = 1, // 整数
    Decimal = 2, // 小数
    Zh = 3, // 中文
    En = 4, // 英文
    NoZh = 5, // 非中文
    Range = 6, // 范围,例如3-7,2-5,7,8
    其中Range,比如"1-9,2,3-7"等,用“,”、“-”分隔即可。
    以上只要不符合规则,就不能进行输入,限制较为严格,并自动过滤重复、排序等。
    代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text.RegularExpressions;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Input;
    using System.Windows.Media;
    
    public enum Input_Type
    {
         All = 0, // 任意
        Integer = 1, // 整数
        Decimal = 2, // 小数
        Zh = 3, // 中文
        En = 4, // 英文
        NoZh = 5, // 非中文
        Range = 6, // 范围
    }
    
    public class InputHelper
    {
        public Input_Type In_Type = Input_Type.All;
        public TextBox Input_Control;
    
        /// <summary>
        /// 输入法开关
        /// </summary>
        /// <param name="obj">TextBox对象</param>
        /// <param name="enable">开关</param>
        public void Set_ImeEnable(TextBox obj, bool enable)
        {
            InputMethod.SetIsInputMethodEnabled(obj, enable);
        }
    
        public void Input_KeyDown(object sender, KeyEventArgs e)
        {
            TextBox in_put = (TextBox)sender;
            bool handel = true;
    
            if (In_Type == Input_Type.Integer)
            {
                if (!string.IsNullOrEmpty(in_put.Text) && in_put.Text[0] == '0')
                {
                    goto Jmp;
                }
                if (e.Key >= Key.D0 && e.Key <= Key.D9 || e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9)
                {
                    handel = false;
                }
            }
            else
            if (In_Type == Input_Type.Decimal)
            {
                if (!string.IsNullOrEmpty(in_put.Text) && in_put.Text[0] == '0')
                {
                    if (in_put.Text.Length == 1 && e.Key != Key.Decimal && e.Key != Key.OemPeriod)
                    {
                        goto Jmp;
                    }
                }
                if (in_put.Text.Contains(".") && (e.Key == Key.Decimal || e.Key == Key.OemPeriod))
                {
                    goto Jmp;
                }
                if (e.Key >= Key.D0 && e.Key <= Key.D9 || e.Key == Key.Decimal || e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9 || e.Key == Key.OemPeriod)
                {
                    handel = false;
                }
            }
            else
            if (In_Type == Input_Type.Zh)
            {
                Regex reg = new Regex("^[\u4e00-\u9fa5]$");
                if (reg.IsMatch(e.Key.ToString()))
                {
                    handel = false;
                }
            }
            else
            if (In_Type == Input_Type.En)
            {
                if (e.Key >= Key.A && e.Key <= Key.Z)
                {
                    handel = false;
                }
            }
            else
            if (In_Type == Input_Type.Range)
            {
                if (e.Key >= Key.D0 && e.Key <= Key.D9 || e.Key == Key.Subtract || e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9 || e.Key == Key.OemMinus || e.Key == Key.OemComma)
                {
                    if (string.IsNullOrEmpty(in_put.Text) && (e.Key == Key.Subtract || e.Key == Key.OemMinus || e.Key == Key.OemComma))
                    {
                        goto Jmp;
                    }
    
                    if (!string.IsNullOrEmpty(in_put.Text))
                    {
                        if ((in_put.Text[in_put.Text.Length - 1] == '-' || in_put.Text[in_put.Text.Length - 1] == ',') && (e.Key == Key.Subtract || e.Key == Key.OemMinus || e.Key == Key.OemComma))
                        {
                            goto Jmp;
                        }
    
                        if (e.Key == Key.Subtract || e.Key == Key.OemMinus)
                        {
                            for (int i = in_put.Text.Length - 1; i >= 0; i--)
                            {
                                if (in_put.Text[i] == ',') break;
                                if (in_put.Text[i] == '-') goto Jmp;
                            }
                        }
                    }
    
                    handel = false;
                }
            }
            Jmp: e.Handled = handel;
        }
    
        public List<int> Get_Range(TextBox obj)
        {
            List<int> get_range = new List<int>();
            string[] splitString = obj.Text.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
    
            for (int i = 0; i < splitString.Length; i++)
            {
                int n;
                if (int.TryParse(splitString[i], out n))
                {
                    get_range.Add(int.Parse(splitString[i]));
                }
                else
                {
                    string[] splitSpear = splitString[i].Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
                    if (splitSpear.Length == 2)
                    {
                        int n1;
                        int.TryParse(splitSpear[0], out n1);
                        int n2;
                        int.TryParse(splitSpear[1], out n2);
                        if (n1 > n2)
                        {
                            n1 = n1 ^ n2;
                            n2 = n1 ^ n2;
                            n1 = n1 ^ n2;
                        }
    
                        if ((n1 != -1) && (n2 != -1))
                        {
                            for (int t = n1; t <= n2; t++)
                            {
                                get_range.Add(t);
                            }
                        }
                    }
                }
            }
    
            if (get_range.Count > 0) get_range = get_range.Distinct().ToList().OrderBy(x => x).ToList();
            return get_range;
        }
    }
    

    使用:比如输入范围,点击按钮显示出来

    namespace Test_9
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            InputHelper inputHelper;
            public MainWindow()
            {
                InitializeComponent();
    
                inputHelper = new InputHelper();
                inputHelper.In_Type = Input_Type.Range;
                
                TextBox1.KeyDown += inputHelper.Input_KeyDown;
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                List<int> num = new List<int>();
                num = inputHelper.Get_Range(TextBox1);
    
                string tmp = "";
                for (int i = 0; i < num.Count; i++) tmp += num[i] + "--";
    
                MessageBox.Show(tmp);
            }
        }
    }
    

    其他功能代码内查看

    展开全文
  • 带清空按钮的TextBoxWPF
  • WPF中自动增加行(动画)的TextBox

    千次阅读 2016-07-23 21:27:49
    WPF中自动增加行(动画)的TextBoxWPF中的Textbox控件是可以自动换行的,只要设置TextWrapping属性为”Wrap”即可,但是存在一个问题:Textbox的高度是固定的,当输入文本过多时就会出现如下情况。Textbox虽然没有...
  • WPF教程(十七)TextBox

    万次阅读 2016-10-17 22:16:02
    文本框是WPF最基础的文本输入控件,允许终端用户编写文本,可以是一行文字,也可以是多行。 单行文本框 文本框是如此的简单,你都不需要设置任何属性,就可以拥有一个完整的可编辑区。 xmlns=...
  • TextBox控件显示为一条横线,真正的定义样式实现效果,可以直接使用样式
  •  TextBox txtBox = sender as TextBox;  string strTag = txtBox.Tag.ToString().Replace("Seconds", "").Replace("ms", "").Replace("s", "").Replace("d", "").Replace("%", "")  .Replace("(", "").Replace(...
  • WPF遍历TextBox

    千次阅读 2018-01-03 15:10:12
    最近本菜鸟在学习WPF 想到Winform中的TextBox 遍历也就想到了 WPF中的 空间遍历,在网络上搜索了好多方法,感觉还是这个方法比较简单  foreach (UIElement element in ca.Children)  {  if (element is TextBox)...
  • WPF自动提示textbox

    热门讨论 2013-11-25 14:00:52
    wpf自动提示文本框,完整程序wpf自动提示文本框,完整程序wpf自动提示文本框,完整程序
  • WPF带清空按钮的TextBox实现:实现原理通过Style制定包含清空Button的TextBox样式模板,通过在Style中引入自定义类的附加属性完成对TextBox的内容清空。输入文字,右方显示清空按钮,点击清空内容。
  • WPF Metro 风格TextBox

    2014-01-05 12:05:07
    Metro 风格TextBox 属性: 鼠标没有悬上去的时候是TextBlock, 悬上去是有背景的TextBlock+半透明白色边框, 当选中的时候可以输入, TextBlock状态背景透明, 选中时候背景为半透明黑色, 加半透明白色边框
  • WPF TextBox框提示文字,鼠标划入提示文字消失 <TextBox Width="248" VerticalContentAlignment="Center" BorderThickness="0" CaretBrush="White"> <TextBox.Resources> <VisualBrush x:...
  • TextBox Height="30" Width="300" TextWrapping="Wrap" Text="TextBox"&gt; &lt;TextBox.Template&gt; &lt;ControlTemplate&gt; &lt;Con
  • 自动输入,我写的时候录了视频,也交代了我的博客地址和参考的原作者博客地址。为了方便大家使用,增加了ADDSource方法,也提供完整样例,可以直接使用
  • WPF TextBox Placeholder

    千次阅读 2014-10-21 11:39:00
    <TextBox.Resources> 请输入用户名"/> </TextBox.Resources> <TextBox.Style> <Style TargetType="TextBox"> </TextBox.Style> </TextBox> 转载于:...
  • 本人WPF菜鸟,我想把TextBox控件数据绑定在Person类的Age字段上,但界面并不能更新,请大神帮忙,谢谢 界面绑定代码: <TextBox Height="20" Text="{Binding Age }" HorizontalAlignment="Left" Margin="63,48,0,0...
  • WPFTextbox样式设置

    千次阅读 2020-07-14 13:09:19
    Textbox外边框不显示 写入下列代码,外边框不显示 BorderBrush="{x:Null}" BorderThickness="0" Textbox自动换行 首先定义TextBox的高度和最大宽度,定义自动换行 Height="100" MaxWidth="230" TextWrapping=...
  • WPF TextBox 设置多行

    2021-05-27 10:19:24
    TextBox Height="373" AcceptsReturn="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Visible"></TextBox> TextWrapping 用于设置输入超出当前textbox宽度后自动换行,当属性值如下: ...
  • TextBox Width="150" Margin="5"&gt; &lt;TextBox.Resources&gt; &lt;VisualBrush x:Key="HintText" TileMode="None" Opacity="0.5" Stretch=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,630
精华内容 5,452
关键字:

textboxwpf