窗体调整大小事件中的大小调整代码不起作用

本文关键字:调整 代码 不起作用 大小事 小事件 窗体 | 更新日期: 2023-09-27 17:57:10

我在表单大小事件中调整表单大小时遇到问题。 我试图避免当用户取消最大化表单并且表单无法调整大小时表单离开屏幕的情况(因为角落总是在屏幕外)。 虽然我现在似乎无法重现这种情况。 无论如何,我想出了一些代码来摆脱这种情况,以防它再次发生。 问题是,当表单未最大化时,不会设置表单高度,尽管达到了 if 语句中的代码。 有一次,当我运行我的应用程序时,顶部和左侧属性损坏,两者都变成了 -32000。 我再次想出了一些代码来防止这导致问题。这是代码,注意宽度是固定的:

public partial class MainForm : Form
{
    Rectangle sr;
    FormWindowState wp;
    public MainForm()
    {
            sr = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
            MaximumSize = new Size(Width, sr.Height);
            wp = WindowState;
    }
    private void MainForm_Activated(object sender, EventArgs e)
    // positions the form
    {
        Top = Properties.Settings.Default.Top;
        if ((Top > sr.Height - 80) || (Top < 0))
             Top = 80;
        Left = Properties.Settings.Default.Left;
        if ((Left > sr.Width - 80) || (Left < 0))
            Left = 80;
        Height = Properties.Settings.Default.Height;
    }
    private void MainForm_Deactivate(object sender, EventArgs e)
    // remembers the forms position
    {
        Properties.Settings.Default.Top = Top;
        Properties.Settings.Default.Left = Left;
        Properties.Settings.Default.Height = Height;
        Properties.Settings.Default.Save();
    }
    private void MainForm_Resize(object sender, EventArgs e)
    {
        Control control = (Control)sender;
        if ((WindowState == FormWindowState.Normal) && 
        (wp == FormWindowState.Maximized) &&
        (control.Size.Height > sr.Height - 80))
            // the following line has no effect: 
            control.Size = new Size(control.Size.Width, 400);
        wp = WindowState;
    }

谢谢。

窗体调整大小事件中的大小调整代码不起作用

当您尝试应用高度/宽度更改时,请确保表单未处于最大化状态。

- 阿塔尔