我正在使用C#编写.net程序。我想问一下如何让用户调整大小 文本框,以便他可以放大或缩小文本框
答案 0 :(得分: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;
}
}
}
答案 1 :(得分:0)
文本框没有允许您手动调整大小的本机属性。您可以做的是设置dock
或anchor
属性,以便当用户调整表单大小时,它将使用它调整文本框的大小。