常用控件1
本章将介绍 .NET WinForms 中的一些常见控件,并描述它们的常用操作。这些控件是构建桌面应用程序用户界面的基础。
要了解 WinForms 的所有控件和它们的详细用法,请参阅 Microsoft 官方文档:
标签 (Label)
System.Windows.Forms.Label
用于显示文字或图片。
设置文本
使用 Text
属性。WinForms 的 Label
不直接支持 HTML 富文本。如果需要富文本,可以考虑使用 RichTextBox
并设置其边框为无,背景色与容器相同。
显示图片
Label
也可以显示图片,通过 Image
属性。
using System.Drawing;
// 加载图片
label.Image = Image.FromFile("image.png");
// 如果需要同时显示文本和图片,可以设置 ImageAlign 和 TextAlign
label.ImageAlign = ContentAlignment.MiddleLeft;
label.TextAlign = ContentAlignment.MiddleRight;
PictureBox
控件。
按钮 (Button)
System.Windows.Forms.Button
就是常见的按钮。
事件:被点击
当按钮被点击时,会触发 Click
事件。可以这样指定处理该事件的方法:
// C#
button.Click += new EventHandler(HandleClick);
// 或者使用 lambda 表达式
button.Click += (sender, e) => {
// 处理点击事件的代码
};
private void HandleClick(object sender, EventArgs e)
{
// 处理点击事件的代码
}
改变文本
代码中可以使用 Text
属性来改变按钮的文本:
禁用、启用
所有控件(继承自 Control
类)都支持禁用和启用。禁用后,该控件不再响应用户输入。
- 禁用
- 启用
设置图标
可以通过 Image
属性给按钮设置图标。
using System.Drawing;
// 设置图标
button.Image = Image.FromFile("logo.png");
// 设置图标对齐方式
button.ImageAlign = ContentAlignment.MiddleLeft;
// 设置文本对齐方式
button.TextAlign = ContentAlignment.MiddleRight;
文本框 (TextBox)
System.Windows.Forms.TextBox
是用于文本输入的控件,默认是单行编辑。
如果需要多行编辑,可以设置 Multiline
属性为 true
。
事件:文本被修改
当文本框中的内容被修改时,会发出 TextChanged
事件。
textBox.TextChanged += new EventHandler(HandleTextChanged);
private void HandleTextChanged(object sender, EventArgs e)
{
// sender 是文本框对象
TextBox tb = sender as TextBox;
string currentText = tb.Text;
// 处理文本变化
}
事件:按下回车键
当用户在文本框中按下回车键时,可以处理 KeyDown
事件来响应。
textBox.KeyDown += new KeyEventHandler(HandleKeyDown);
private void HandleKeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// 处理回车键事件
e.SuppressKeyPress = true; // 阻止发出按键声音
}
}
AcceptButton
属性为某个按钮,这样当用户在任何控件上按回车时,都会触发该按钮的点击事件。
获取文本
通过 Text
属性获取编辑框内的文本内容:
设置提示文本 (Placeholder)
WinForms 的 TextBox
没有内置的 PlaceholderText
属性。但这可以通过一些技巧来实现,比如使用 SendMessage
API。对于简单的场景,可以在窗体加载时设置提示,并在用户点击时清除。
设置文本
通过 Text
属性设置编辑框内的文本内容:
清除所有文本
Clear
方法可以清除编辑框内所有的文本内容:
只允许输入数字
可以通过处理 KeyPress
事件来限制用户输入:
textBox.KeyPress += new KeyPressEventHandler(HandleKeyPress);
private void HandleKeyPress(object sender, KeyPressEventArgs e)
{
// 如果输入的不是数字,也不是控制字符(如退格键),则取消该输入
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
拷贝和粘贴文本
TextBox
控件内置了标准的 Ctrl+C
和 Ctrl+V
功能。也可以通过代码调用:
在末尾添加文本
AppendText
方法可以在末尾添加文本,并且会自动换行:
在光标处插入文本
通过 SelectedText
属性可以在光标处插入文本(或替换选中的文本):
获取选中文本
通过 SelectedText
属性获取:
设置最大长度
通过 MaxLength
属性可以限制文本框能输入的最大字符数。
TextChanged
事件中进行判断和处理。
在末尾添加文本并自动滚动
添加内容后,调用 ScrollToCaret
方法可以确保新内容可见。