2

我正在使用 C# 编写一个 .net 程序。我想问我如何让用户调整文本框的大小,以便他可以放大或缩小文本框

4

2 回答 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

文本框没有允许您手动调整它们大小的本机属性。您可以做的是设置dockoranchor属性,以便当用户调整表单大小时,它会调整文本框的大小。

于 2013-01-22T02:53:28.787 回答