문제

좋아, 그녀는 내 문제를 겪습니다. 최대화되지 않을 때 최대 크기는 양식 내부의 구성 요소의 총 높이 여야한다는 양식이 있습니다. 이를 달성하기 위해 다음을 사용합니다.

    private void resize_form(object sender, EventArgs e)
    {
        this.MaximumSize = new System.Drawing.Size(1000, this.panel4.Height + this.label2.Height + this.HeightMin);
    }

양식의 크기즈 이벤트에서 화재가 발생합니다. 구성 요소 크기가 항상 변경되기 때문에 크기 조정 이벤트에서이를 수행하는 것이 합리적입니다. 양식을 최대화하려면 양식이 this.maxumsize에 정의 된 가장 높은 설정으로 이동합니다. 그래서 양식이 극대화되기 전에 양식을 최대화하고 최대 규모를 화면 경계로 설정하는 방법이 있는지 궁금합니다.

크기 조정 이벤트없이 최대 크기 값을 변경하는 더 좋은 방법이 있다면, 이는 또한 좋을 것입니다 :)

도움이 되었습니까?

해결책 2

나는 나에게 완벽하게 어울리는 대답을 발견했다. 릴 wndproc 오버라이드 : D (나는 지금 wndproc을 좋아합니다)

protected override void WndProc(ref Message message)
{
    const int WM_SYSCOMMAND = 0x0112;
    const int SC_MAXIMIZE = 0xF030; 

    switch (message.Msg)
    {
        case WM_SYSCOMMAND:
            int command = message.WParam.ToInt32() & 0xfff0;
            if (command == SC_MAXIMIZE) 
            {
                this.maximize = true;
                this.MaximumSize = new System.Drawing.Size(0, 0);
            }
            break;
    }

    base.WndProc(ref message);
}

private void resize_form(object sender, EventArgs e)
{
    if (!maximize)
    {
        this.MaximumSize = new System.Drawing.Size(1000, this.panel4.Height + this.label2.Height + this.HeightMin);
    }
}

기본적으로 teh sc_maximize 메시지를받을 때 true로 maximize를 설정합니다. 크기 조정 이벤트는 this.maximize가 false로 설정된 경우에만 새로운 최대 규모 만 설정합니다. 멋진 XD

다른 팁

여전히 크기 조정 이벤트를 사용해야하지만 WindowState:

if (this.WindowState == FormWindowState.Maximized)
{
    // Do your stuff
}

Yshuditelu가 지적한 것처럼 양식의 최소 크기 속성을 설정할 수 있습니다. 앵커 값을 신중하게 사용하면 너무 멀리 줄어들 수 없으며 성장할 때 구성 요소가 움직이고/또는 성장해야합니다. 필수의.

당신은 당신이 설정하고 싶지 않습니까? 최소 크기 재산? 최소 크기를 모든 레이블의 크기로 설정하면 양식이 그보다 작지 않습니다. 그러나 최소값보다 큰 한 사용자가 원하는 크기로 여전히 성장할 수 있습니다.

확인하십시오 System.Windows.forms.Screen 수업. 관련 지점에서 화면을 가져 오면 (멀티 몬 케이스를 처리하기 위해) 해상도를 얻으십시오.

이것은 formwindowstate.maximized를 확인하는 것에 대한 다른 의견과 함께 작동해야합니다.

사용자가 상단 막대에서 클릭하면 창을 크기를 조정할 수 있으므로 다음을 사용합니다.

private void Form1_Resize(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Normal)
    {
        this.WindowState = FormWindowState.Maximized;
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top