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