Как я могу заставить окно выглядеть как рамка?

Он должен выглядеть как маленькое окошко, которое появляется, когда вы щелкаете значок "Центр поддержки", "Питание", "Сеть" или "Звук" на панели задач. У этого должна быть та стеклянная граница без заголовка.

Он также должен быть фиксированного размера и не изменяемого размера. Спасибо всем, кто может помочь!:)

1 ответ

Решение

Вам нужно установить ControlBox в false, очистить текст заголовка и установить стиль рамки. Поскольку вы заявили, что хотите установить значительную границу, но не хотите изменять ее размер, вы также можете установить минимальный и максимальный размер. Наконец, чтобы курсор мыши не показывал курсор изменения размера, мы переопределяем результат WM_NCHITTEST, если они находятся на одной из границ:

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;
        }
    }
}
Другие вопросы по тегам