Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我怎样才能使窗户看起来像一个框架?_C#_.net_Windows_Trayicon_Window Style - Fatal编程技术网

C# 我怎样才能使窗户看起来像一个框架?

C# 我怎样才能使窗户看起来像一个框架?,c#,.net,windows,trayicon,window-style,C#,.net,Windows,Trayicon,Window Style,它应该看起来像当您单击托盘中的“动作中心”、“电源”、“网络”或“声音”图标时出现的小框。它需要有没有标题栏的玻璃边框 它还需要是一个固定的大小,不可调整大小。感谢所有能帮忙的人!:) 您需要将ControlBox设置为false,清除标题文本,并设置边框样式。由于您声明需要大小可调的边框,但不允许调整其大小,因此还可以设置最小和最大大小。最后,为了防止鼠标光标显示调整大小光标,如果它们位于其中一个边框上,我们将覆盖结果: private void Form1_Load(object send

它应该看起来像当您单击托盘中的“动作中心”、“电源”、“网络”或“声音”图标时出现的小框。它需要有没有标题栏的玻璃边框


它还需要是一个固定的大小,不可调整大小。感谢所有能帮忙的人!:)

您需要将ControlBox设置为false,清除标题文本,并设置边框样式。由于您声明需要大小可调的边框,但不允许调整其大小,因此还可以设置最小和最大大小。最后,为了防止鼠标光标显示调整大小光标,如果它们位于其中一个边框上,我们将覆盖结果:

private void Form1_Load(object sender, EventArgs e)
{
    this.ControlBox = false;
    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
    this.MinimumSize = this.MaximumSize = this.Size; 
    this.Text = "";                
}
const int WM_NCHITTEST = 0x0084;
const int HTBOTTOM = 15;
const int HTBOTTOMLEFT = 16;
const int HTBOTTOMRIGHT = 17;
const int HTLEFT = 10;
const int HTRIGHT = 11;
const int HTTOPLEFT = 13;
const int HTTOPRIGHT = 14;
const int HTTOP = 12;
const int HTCLIENT = 1;
protected override void WndProc(ref Message m)
{
    base.WndProc(ref m);
    if (m.Msg == WM_NCHITTEST)
    {
        Console.WriteLine(m.Result.ToString());
        switch (m.Result.ToInt32())
        {
            case HTBOTTOM:
            case HTBOTTOMLEFT:
            case HTBOTTOMRIGHT:
            case HTLEFT:
            case HTRIGHT:
            case HTTOPLEFT:
            case HTTOPRIGHT:
            case HTTOP:
                m.Result =(IntPtr) HTCLIENT;
                break;
        }
    }
}

几秒钟的谷歌搜索应该会给你答案。禁用最大化、最小化和控制框,将标题设置为空字符串,并将表单
FormBorderStyle
设置为
Fixed3D
这不会给我一个玻璃状的边框。。。当我将边框设置为Sizable时,它确实起作用,但它必须是固定大小。可能是@FactorMystic的重复项,但不是完全重复项。这个问题的公认答案是可调整大小,这不是凤凰城想要的。不,但公平地说,两者之间的区别是一个单一的属性…它需要看起来像玻璃。我正在尝试匹配Windows 7的样式。@PhoenixLogan我更新了示例。去掉调整大小的鼠标光标可能需要一些工作,但这会给你想要的外观和感觉。我如何去掉鼠标光标?没关系。我找到了一个使用WndProc覆盖来处理WM_NCHITTEST并返回所有边界的客户端的示例。@PhoenixLogan我也找到了,并用一个对我有效的解决方案更新了答案。