无法完全隐藏Windows窗体C中的顶部栏#

时间:2016-05-21 22:03:01

标签: c# winforms controlbox

我在C#工作。我知道这个问题是常见的,只是我仍然无法完全隐藏顶部栏。这是我将表单文本字符串设置为""和controlbox = false

仍然想要阴影效果:

Still want the shadow effect

因此,你可以看到侧面的边框消失了(太棒了!)并且有通常的阴影(太棒了!)但顶部边框有这条奇怪的白线,我似乎无法移除。

我不想将表单border属性设置为' none'因为我喜欢集成的大小控件和形式阴影,所以这不是一个选项。还有其他建议吗?

提前致谢!

(我应该指定右上角的按钮是由我生成的,并显示我可编辑表单的边缘。上面的空白区域就是我想要移除的。)

4 个答案:

答案 0 :(得分:0)

我无法在Windows 7中复制这个 - 我得到一个白色方块。
(这取决于FormBorderStyle - 我在其中加上'None',以完成删除边框)
我采取的步骤:
1.创建新的Windows窗体应用程序 2.单击表单窗口
3.属性 - >
3.1。 FormBorderStyle =无
3.2。 ControlBox = False
3.3。文字=
(在文本中我删除了'Form1'并将其留空)

  1. 你使用了什么项目?
    我无法使用WPF轻松找到它,所以我猜这是Windows Forms应用程序。

  2. 您使用的操作系统是什么?
    我使用的是Windows 7,是你的Windows 10吗?

  3. 我没有得到的是如何在右侧显示最小化,最大化和关闭按钮。 ControlNox = false会立即删除它们。

答案 1 :(得分:0)

我知道这篇文章很旧,但是我偶然发现了这个问题,并最终解决了它,因此我将其发布在这里,以供任何有帮助的人使用。

因此,我用自己的控制栏和按钮制作了一个可自定义的,可调整大小的无边界Form类,类似于OP。想法是让Form及其所有相关的WndProc代码充当项目中所有其他对话框表单的基类。

在我运行项目时,即使我正确设置了所有适当的表单属性,我在表单顶部也得到了完全相同的白线。

问题最终是由于Form继承,所有派生的Form也都有自己的私有InitializeComponent方法。我不知道VS IDE在派生的Form类中将FormBorderStyle属性设置为Sizable,因为我的注意力仅集中在自定义基类上。

如果您为Form使用自定义基类,请在派生的类中正确设置FormBorderStyle即可解决问题。

答案 2 :(得分:0)

如果您单击表单,请转到属性,然后在 FormBorderSyle 部分中将其放在 False

答案 3 :(得分:0)

如果您没有为阴影设置FormBorderStyle为None,我已经在这里回答了如何轻松制作阴影: Drop shadow on Borderless Winform-No flicker or disappearance

这是我的答案:

请尝试以下步骤,并返回任何错误:

将以下代码添加到名为DropShadow.cs的新代码文件中;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Core
{
    public class DropShadow
    {
        #region Shadowing

        #region Fields

        private bool _isAeroEnabled = false;
        private bool _isDraggingEnabled = false;
        private const int WM_NCHITTEST = 0x84;
        private const int WS_MINIMIZEBOX = 0x20000;
        private const int HTCLIENT = 0x1;
        private const int HTCAPTION = 0x2;
        private const int CS_DBLCLKS = 0x8;
        private const int CS_DROPSHADOW = 0x00020000;
        private const int WM_NCPAINT = 0x0085;
        private const int WM_ACTIVATEAPP = 0x001C;

        #endregion

        #region Structures

        [EditorBrowsable(EditorBrowsableState.Never)]
        public struct MARGINS
        {
            public int leftWidth;
            public int rightWidth;
            public int topHeight;
            public int bottomHeight;
        }

        #endregion

        #region Methods

        #region Public

        [DllImport("dwmapi.dll")]
        [EditorBrowsable(EditorBrowsableState.Never)]
        public static extern int DwmExtendFrameIntoClientArea(IntPtr hWnd, ref MARGINS pMarInset);

        [DllImport("dwmapi.dll")]
        [EditorBrowsable(EditorBrowsableState.Never)]
        public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize);

        [DllImport("dwmapi.dll")]
        [EditorBrowsable(EditorBrowsableState.Never)]
        public static extern int DwmIsCompositionEnabled(ref int pfEnabled);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public static bool IsCompositionEnabled()
        {
            if (Environment.OSVersion.Version.Major < 6) return false;

            bool enabled;
            DwmIsCompositionEnabled(out enabled);

            return enabled;
        }

        #endregion

        #region Private

        [DllImport("dwmapi.dll")]
        private static extern int DwmIsCompositionEnabled(out bool enabled);

        [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
        private static extern IntPtr CreateRoundRectRgn
        (
            int nLeftRect,
            int nTopRect,
            int nRightRect,
            int nBottomRect,
            int nWidthEllipse,
            int nHeightEllipse
         );

        private bool CheckIfAeroIsEnabled()
        {
            if (Environment.OSVersion.Version.Major >= 6)
            {
                int enabled = 0;
                DwmIsCompositionEnabled(ref enabled);

                return (enabled == 1) ? true : false;
            }
            return false;
        }

        #endregion

        #region Overrides

        public void ApplyShadows(Form form)
        {
            var v = 2;

            DwmSetWindowAttribute(form.Handle, 2, ref v, 4);

            MARGINS margins = new MARGINS()
            {
                bottomHeight = 1,
                leftWidth = 0,
                rightWidth = 0,
                topHeight = 0
            };

            DwmExtendFrameIntoClientArea(form.Handle, ref margins);
        }

        #endregion

        #endregion

        #endregion
    }
}

在您的表单中,将此行添加到InitializeComponent()下;

(new Core.DropShadow()).ApplyShadows(this);