Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 表单调整大小事件中的调整大小代码无效_C#_Forms_Resize - Fatal编程技术网

C# 表单调整大小事件中的调整大小代码无效

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

我在表单大小事件中调整表单大小时遇到问题。我试图避免这样一种情况,即当用户取消表单的最大化并且表单无法调整大小时,表单离开屏幕(因为角落总是离开屏幕)。虽然我现在似乎无法重现这种情况。无论如何,我想出了一些代码来摆脱这种情况,如果它再次发生。问题是,当表单未最大化时,表单高度没有设置,尽管达到了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;
    }
public分部类MainForm:Form
{
矩形sr;
FormWindowState可湿性粉剂;
公共表格(
{
sr=System.Windows.Forms.Screen.PrimaryScreen.Bounds;
最大尺寸=新尺寸(宽度、垂直高度);
wp=窗口状态;
}
私有void MainForm_已激活(对象发送方,事件参数e)
//定位表单
{
Top=Properties.Settings.Default.Top;
如果((顶部>垂直高度-80)| |(顶部<0))
Top=80;
左=Properties.Settings.Default.Left;
如果((左>右宽度-80)| |(左<0))
左=80;
高度=Properties.Settings.Default.Height;
}
私有void MainForm_停用(对象发送方,事件参数e)
//记住表格的位置
{
Properties.Settings.Default.Top=Top;
Properties.Settings.Default.Left=左;
Properties.Settings.Default.Height=高度;
Properties.Settings.Default.Save();
}
私有void MainForm_Resize(对象发送器,事件参数e)
{
控制=(控制)发送方;
如果((WindowState==FormWindowState.Normal)和
(wp==FormWindowsState.Maximized)&&
(控制尺寸高度>高级高度-80))
//以下行无效:
control.Size=新尺寸(control.Size.Width,400);
wp=窗口状态;
}

谢谢。

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

--阿塔尔