常用控件1
本章将介绍 .NET WinForms 中的一些常见控件,并描述它们的常用操作。这些控件是构建桌面应用程序用户界面的基础。
要了解 WinForms 的所有控件和它们的详细用法,请参阅 Microsoft 官方文档:
标签 (Label)
System.Windows.Forms.Label 用于显示文字或图片。
设置文本
使用 Text 属性。WinForms 的 Label 不直接支持 HTML 富文本。如果需要富文本,可以考虑使用 RichTextBox 并设置其边框为无,背景色与容器相同。
label.Text = "这是一个标签";
显示图片
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 属性来改变按钮的文本:
button.Text = "新的文本";
禁用、启用
所有控件(继承自 Control 类)都支持禁用和启用。禁用后,该控件不再响应用户输入。
- 禁用
button.Enabled = false;
- 启用
button.Enabled = true;
设置图标
可以通过 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 属性获取编辑框内的文本内容:
string text = textBox.Text;
设置提示文本 (Placeholder)
WinForms 的 TextBox 没有内置的 PlaceholderText 属性。但这可以通过一些技巧来实现,比如使用 SendMessage API。对于简单的场景,可以在窗体加载时设置提示,并在用户点击时清除。
设置文本
通过 Text 属性设置编辑框内的文本内容:
textBox.Text = "你好,WinForms";
清除所有文本
Clear 方法可以清除编辑框内所有的文本内容:
textBox.Clear();
或者
textBox.Text = string.Empty;
只允许输入数字
可以通过处理 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 功能。也可以通过代码调用:
// 拷贝选中文本到剪贴板
textBox.Copy();
// 粘贴剪贴板内容到当前光标处
textBox.Paste();
在末尾添加文本
AppendText 方法可以在末尾添加文本,并且会自动换行:
multiLineTextBox.AppendText("你好,白月黑羽");
在光标处插入文本
通过 SelectedText 属性可以在光标处插入文本(或替换选中的文本):
multiLineTextBox.SelectedText = "你好,白月黑羽";
获取选中文本
通过 SelectedText 属性获取:
string selection = multiLineTextBox.SelectedText;
设置最大长度
通过 MaxLength 属性可以限制文本框能输入的最大字符数。
multiLineTextBox.MaxLength = 1000;
对于行数限制,没有直接的属性,需要通过代码在 TextChanged 事件中进行判断和处理。
在末尾添加文本并自动滚动
添加内容后,调用 ScrollToCaret 方法可以确保新内容可见。
logBox.AppendText("新日志条目...
");
logBox.ScrollToCaret();