C # A Форма без полей с настройками полей в режиме дизайна - PullRequest
0 голосов
/ 22 января 2019

Я определил стиль границы для создания Форма без полей . с методом переопределения к настраиваемой строке заголовка.

Но когда я переключаю панель управления в режим конструктора, это покроет мою настроенную строку заголовка, или поместите элемент управления statusStrip в форму, также охватывают внешнюю границу, которая была настроена по форме.

enter image description here

Я установил верхнюю / левую / ширину панели, чтобы ограничить превышение окна, но это не хорошее решение, потому что я также хочу использовать свойство Control.Dock, чтобы оно «пристыковалось к родительскому элементу управления».

Я нашел здесь другой подход: Размер окна WPF без полей изменяется с внутренними полями , но не может.

I want to drag a new control then fixed green area enter image description here

Могу ли я определить «поля» как CSS BOX, пусть все новые элементы управления добавляются в форму Form1 в режиме разработки, тогда автоматический диапазон ограничений?

Это мой код для создания формы без полей:

----
Test.cs
----

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace TestForm
{
    public partial class Test : Form
    {
        protected override void WndProc(ref Message m)
        {   
        ....
            base.WndProc(ref m);
        }
        private const int cGrip = 20;      // Grip size
        private const int cCaption = 35;   // Caption bar height;

        protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x84)
            {
                Point pos = new Point(m.LParam.ToInt32());
                pos = this.PointToClient(pos);
                if (pos.Y < cCaption)
                {
                    m.Result = (IntPtr)2;
                    return;
                }
                if (pos.X >= this.ClientSize.Width - cGrip && pos.Y >= this.ClientSize.Height - cGrip)
                {
                    m.Result = (IntPtr)17;
                    return;
                }
            }
            base.WndProc(ref m);
        }
        protected override void OnLoad(EventArgs e)
        {
            FormBorderStyle = FormBorderStyle.None;
            base.OnLoad(e);
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            Rectangle borderRectangle = this.ClientRectangle;
            borderRectangle.Inflate(0, 0);
            ControlPaint.DrawBorder3D(e.Graphics, borderRectangle, Border3DStyle.Raised);

            base.OnPaint(e);
        }

    }
}

И Form1.cs:

namespace TestForm
{
    public partial class Form1 : Test
    {
        public Form1()
        {
        //
        }
   }
}
  • .Net Framework 4.0
  • WinForms

Китайские заметки:

Панель управления 個 然後 將 其 為 「停駐 於 容器 容器 容器 的 的 的 的 的 的 的 覆蓋 覆蓋 覆蓋 ; 個 rip 放進 一個 statusStrip control 10 下方 , 也會 造成

這個 可以 讓 這個 Из 可以 直接 在 設計 階段 時 , 就 可以 所有 被 被 進來 的 s Control Control Control Control

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...