سؤال

حسنا هيريس مشكلتي. لدي نموذج عند عدم تعظيمه، يجب أن يكون الحد الأقصى لحجمه الإجمالي للمكونات داخل النموذج. لتحقيق ذلك، استخدم هذا:

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

التي تنطلق على حدث تغيير حجم النموذج. لأن حجم المكون هو دائما تغيير الشعور بهذا القيام بذلك على حدث تغيير الحجم. كيف على الإطلاق إذا أردت زيادة النموذج، فإن النموذج يذهب فقط إلى أعلى الإعدادات المحددة في هذا. maximumsize. لذلك كنت أتساءل هل هناك طريقة لمعرفة متى سيتم تكبير النموذج وتعيين أقصى حد من حدود الشاشة قبل تكبير النموذج.

إذا كانت هناك طريقة أفضل لتغيير القيمة السققة دون تغيير حجم الحدث، فسيكون ذلك رائعا أيضا :)

هل كانت مفيدة؟

المحلول 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);
    }
}

أساسا يحدد هذا. maximize to true عندما يتلقى رسالة teh sc_maximize. سيحدد حدث تغيير حجم سوى أقصى حد جديد إذا تم تعيين هذا. nifty xd.

نصائح أخرى

ما زلت بحاجة إلى استخدام حدث تغيير الحجم، ولكن تحقق WindowState:

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

كما يشير yshuditelu، يمكنك ضبط خاصية الحد الأدنى للحجم النموذج الخاص بك أيضا - والتي ينبغي، عند الاقتران باستخدام القيم المرساة، تعني أنه لا يمكن أبدا أن يتقلص بعيدا وعندما ينمو المكونات سوف تتحرك و / أو تنمو مطلوب.

هل أنت متأكد أنك لا تريد أن تحدد الحد الأدنى لحجم خاصية؟ إذا قمت بتعيين الحد الأدنى لحجم جميع الملصقات، فلن يكون النموذج أصغر من ذلك. لكن لا يزال بإمكانه أن ينمو على أي حجم يريد المستخدم، طالما أنه أكبر من الحد الأدنى.

تفحص ال system.windows.forms.cscreen. صف دراسي. احصل على الشاشة من نقطة ذات صلة (للتعامل مع حالة Multi-Mon) ثم احصل على دقةها.

يجب أن يعمل هذا جنبا إلى جنب مع التعليق الآخر حول فحص 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