我正在使用 C# 编写一个 .net 程序。我想问我如何让用户调整文本框的大小,以便他可以放大或缩小文本框
问问题
450 次
2 回答
4
这在 Winforms 中很容易做到,只需要几行代码。Windows 中的每个窗口都具有由用户调整大小的先天能力。这通常只适用于顶级窗口(表单),但它同样适用于任何客户端窗口。
关键是响应 WM_NCHITTEST 消息。这是当您单击窗口时 Windows 发送到窗口的消息。它本质上是在问“什么被击中了?” 您可以简单地说“角落被击中”,然后 Windows 从那里拿走它。它会更改光标以指示可以拖动角。并在用户移动鼠标时自动调整窗口大小。
向您的项目添加一个新类并粘贴如下所示的代码。编译。将新控件从工具箱顶部拖放到窗体上,并将其 Multiline 属性设置为 true。按 F5 并拖动文本框的右下角以查看它是否有效。
using System;
using System.Drawing;
using System.Windows.Forms;
class SizeableTextBox : TextBox {
protected override void WndProc(ref Message m) {
base.WndProc(ref m);
// Intercept WM_NCHITTEST
if (m.Msg == 0x84 && this.Multiline) {
// Find out where the cursor is located
var pos = PointToClient(new Point(m.LParam.ToInt32()));
// Return HTBOTTOMRIGHT if in the lower-right corner
if (pos.X >= this.Width - 12 && pos.Y >= this.Height - 12) m.Result = (IntPtr)17;
}
}
}
于 2013-01-22T03:33:24.390 回答
0
文本框没有允许您手动调整它们大小的本机属性。您可以做的是设置dock
oranchor
属性,以便当用户调整表单大小时,它会调整文本框的大小。
于 2013-01-22T02:53:28.787 回答