欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > WinForm真入门(8)——TextBox控件详解

WinForm真入门(8)——TextBox控件详解

2025/4/7 12:21:55 来源:https://blog.csdn.net/pu_yu_hun_jin/article/details/147031090  浏览:    关键词:WinForm真入门(8)——TextBox控件详解

WinForm中TextBox控件详解

TextBox是WinForm中最常用的输入控件之一,如下图,用于接收用户输入的文本信息。以下从基础到高级功能进行详细解析,并提供一些实际应用示例。
在这里插入图片描述

一、基础属性与使用‌

1、核心属性‌

  • Text‌:获取或设置文本框内容。
textBox1.Text = "默认值";
string input = textBox1.Text;
  • Multiline‌:是否允许多行输入(默认为false)。
textBox1.Multiline = true;
textBox1.Height = 100; // 调整高度以适应多行
  • ‌MaxLength‌:限制输入的最大字符数。
textBox1.MaxLength = 50; // 最多输入50个字符
  • ‌PasswordChar‌:设置密码掩码字符(如*)。
textBox1.PasswordChar = '*'; // 输入显示为*
  • ‌ReadOnly‌:设置为只读模式,禁止用户编辑。
textBox1.ReadOnly = true;

2‌、常用事件‌

  • ‌TextChanged‌:文本内容变化时触发。
private void textBox1_TextChanged(object sender, EventArgs e)
{label1.Text = "当前长度:" + textBox1.Text.Length;
}
  • ‌KeyPress/KeyDown/KeyUp‌:处理键盘输入。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{if (!char.IsDigit(e.KeyChar) && e.KeyChar != '\b') // 仅允许数字和退格{e.Handled = true;}
}
  • ‌Validating/Validated‌:数据验证。
private void textBox1_Validating(object sender, CancelEventArgs e)
{if (string.IsNullOrEmpty(textBox1.Text)){MessageBox.Show("内容不能为空!");e.Cancel = true; // 阻止焦点离开}
}

二、高级功能与技巧‌

1、数据绑定‌

绑定到对象属性:

public class User
{public string Name { get; set; }
}
User user = new User();
textBox1.DataBindings.Add("Text", user, "Name");

实时同步数据:

Binding binding = textBox1.DataBindings.Add("Text", user, "Name");
binding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;

2‌、自动完成(AutoComplete)‌

自定义建议列表:

textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
AutoCompleteStringCollection sources = new AutoCompleteStringCollection();
sources.AddRange(new string[] { "Apple", "Banana", "Cherry" });
textBox1.AutoCompleteCustomSource = sources;

‌水印提示(Placeholder)‌

通过事件模拟水印效果:

private void textBox1_Enter(object sender, EventArgs e)
{if (textBox1.Text == "请输入用户名"){textBox1.Text = "";textBox1.ForeColor = SystemColors.WindowText;}
}
private void textBox1_Leave(object sender, EventArgs e)
{if (string.IsNullOrEmpty(textBox1.Text)){textBox1.Text = "请输入用户名";textBox1.ForeColor = SystemColors.GrayText;}
}

3‌、多语言支持‌

通过资源文件动态切换文本:

textBox1.Text = Properties.Resources.UserNamePlaceholder;

三、常见问题与解决方案‌

1‌、输入验证‌

使用KeyPress限制输入类型(如仅数字):

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)){e.Handled = true;}
}

正则表达式验证格式(如邮箱):

private void textBox1_Validating(object sender, CancelEventArgs e)
{Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");if (!regex.IsMatch(textBox1.Text)){MessageBox.Show("邮箱格式错误!");e.Cancel = true;}
}

2‌、性能优化‌

避免频繁更新文本时触发TextChanged:

textBox1.TextChanged -= textBox1_TextChanged;
textBox1.Text = "新内容";
textBox1.TextChanged += textBox1_TextChanged;

‌3、防闪烁处理‌

启用双缓冲(需继承TextBox自定义控件):

public class NoFlickerTextBox : TextBox
{public NoFlickerTextBox(){SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);}
}

‌‌4、异步输入处理‌

使用async/await处理耗时操作(如实时搜索):

private async void textBox1_TextChanged(object sender, EventArgs e)
{string keyword = textBox1.Text;var results = await Task.Run(() => SearchDatabase(keyword));listBox1.DataSource = results;
}

四、与其他输入控件对比‌

‌控件‌‌特点‌ ‌适用场景‌
‌TextBox‌基础文本输入,支持单行/多行、密码掩码、数据绑定通用文本输入
‌RichTextBox‌支持富文本(字体、颜色、图片)、段落格式、超链接复杂内容编辑(如记事本)
‌MaskedTextBox‌强制输入格式(如日期、电话),通过掩码模板(000-0000)限制输入格式严格的输入(如身份证号)
‌NumericUpDown‌仅允许数字输入,提供上下箭头调整数值数值范围控制(如年龄选择)

通过掌握TextBox的核心功能与扩展技巧,能够高效构建用户友好的输入界面,同时结合数据验证和性能优化,确保应用稳定可靠。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词