c# - 文本框属性

标签 c# asp.net .net

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

最佳答案

这在 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;
        }
    }
}

关于c# - 文本框属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14450800/

相关文章:

c# - 如何将当前运行的程序集复制到 Windows 启动项

c# - Ajax 回发导致所有其他 Web 请求挂起,直到方法请求完成

c# - Log4net 生成错误的日志文件名

c# - 使用 RestSharp 发布数据时序列化一个对象

.net - 接口(interface)扩展方法的 C# 命名约定

c# - Selenium 单击 href 中 <li> 中的链接

c# - f#中的并行快速排序

c# - 使用数据库中的Reverse-LIKE进行选择

javascript - 无法触发 Bootstrap 确认

javascript - 从 ASP.net 代码隐藏有条件地关闭 jquery 模式窗口