1

我希望我的 Windows 窗体窗体保持窗口边框,同时没有标题栏并且不可调整大小(固定)(类似于窗口预览,当将鼠标悬停在任务栏上的按钮上时):

在此处输入图像描述

设置ControlBoxfalse和删除标题栏并保持我Text想要""的边框,但只有当表单相当大时边框才可见。当我将 设置FormBorderStyle为其中一种Fixed*样式时,边框消失:

在此处输入图像描述

我怎样才能实现所描述的行为?

4

2 回答 2

1

您可以 pinvoke SetWindowsLong并调整窗口样式

// run in LINQpad
private const int GWL_STYLE = -16;
private const int WS_SIZEBOX = 0x040000;
[DllImport("user32.dll", SetLastError = true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
void Main()
{
    var form = new Form();
    form.ControlBox = false;
    form.FormBorderStyle = FormBorderStyle.FixedDialog;
    form.Show();
    SetWindowLong(form.Handle, GWL_STYLE, GetWindowLong(form.Handle, GWL_STYLE) | WS_SIZEBOX);
}

之后,您将不得不阻止手动调整大小。

于 2013-07-31T21:01:35.903 回答
0

我刚刚玩弄了我的一个项目并设置FormBorderStyleFixedSingle通过设计视图,并且窗口似乎保留了 Windows 8 的边框。我最初在标题中有文本,这迫使边框呈现。我删除了文本并且不再呈现边框,因此作为一个 hacky 解决方案,我只需输入一个空字符串,按几次退格键。这使得边界出现并保持固定。

于 2013-07-31T20:56:48.557 回答