我有一个主窗口的应用程序,其中包含一个矩形和一个按钮,该按钮指向用户输入信息的另一个窗口。输入信息后,用户点击一个按钮,然后将其返回主窗口并相应地更改大小。我想要实现的是,如果用户再次按下主窗口中的按钮,则将ActualHeight和ActualWidth返回到矩形,类似于刷新矩形。 所有代码都在主窗口按钮单击事件中。如果您需要有关代码的任何特定信息,我很乐意将其提供给您。
private void buttonStart_Click(object sender, RoutedEventArgs e)
{
Questionnaire q = new Questionnaire();
q.ShowDialog();
var size = q.textBoxNumberOfEmployees.Text;
if (int.Parse(size) > 5 && int.Parse(size) < 15)
{
Rect1.Height = Rect1.ActualHeight - 10;
Rect1.Width = Rect1.ActualWidth - 5;
}
else if (int.Parse(size) > 15 && int.Parse(size) < 30)
{
Rect1.Height = Rect1.ActualHeight - 15;
Rect1.Width = Rect1.ActualWidth - 10;
}
else if (int.Parse(size) > 30 && int.Parse(size) < 100)
{
Rect1.Height = Rect1.ActualHeight - 30;
Rect1.Width = Rect1.ActualWidth - 15;
}
else
{
Rect1.Height = Rect1.ActualHeight;
Rect1.Width = Rect1.ActualWidth;
}
答案 0 :(得分:1)
您可以将矩形的原始高度和宽度存储在表单加载中的变量中。使用这些变量使矩形到原始大小的斜面在按钮单击时打开新窗口。 以下代码位于表单顶部。
private int rect1width; private int rect1height;
在你的form__load中,你最后写下这个。
rect1width = Rect1.ActualWidth; rect1height = Rect1.ActualHeight;
在您的按钮中,点击代码后面的代码位于顶部。
Rect1.Width = rect1width; Rect1.Height = rect1height;
答案 1 :(得分:-1)
这是一些看似很长的代码,但它使用了MVC类型的设计模式和具有状态模式的复合。使真正的MVC真正缺少的唯一东西是Observers和可观察的接口,它们会订阅调查问卷。
public interface RectangleState
{
int myHeight { get; set; }
int myWidth { get; set; }
}
public class RectangleModel
{
private static Rectangle Rect1;
public RectangleModel(Rectangle rect1 )
{
Rect1 = rect1;
}
private RectangleState state;
public RectangleState State
{
get
{
return state;
}
set
{
state = value;
ModifyState(value.myHeight, value.myWidth);
}
}
private void ModifyState(int Height, int Width)
{
Rect1.Height = Height;
Rect1.Width = Width;
}
}
public class SmallState : RectangleState
{
public int myHeight { get; set; } = 20;
public int myWidth { get; set; } = 80;
}
public class MediumState : RectangleState
{
public int myHeight { get; set; } = 25;
public int myWidth { get; set; } = 90;
}
public class LargeState : RectangleState
{
public int myHeight { get; set; } = 35;
public int myWidth { get; set; } = 120;
}
public class NormalState : RectangleState
{
public int myHeight { get; set; } = 30;
public int myWidth { get; set; } = 100;
}
现在您需要做的就是插入条件:
RectangleModel RM = new RectangleModel(myRectangle); // store this in your class as property;
int size = 0;
int.TryParse(q.textBoxNumberOfEmployees.Text, out size);
if (size > 5 && size < 15)
{
RM.State = new SmallState();
}
else if (size > 15 && size < 30)
{
RM.State = new MediumState();
}
else if (size > 30 && size < 100)
{
RM.State = new LargeState();
}
else
{
RM.State = new NormalState();
}
如果稍后您决定要更改其中任何一个的默认值,您可以更改它们。如果要添加新的矩形形状或大小,可以添加它。如果您希望创建适配器以进一步修改矩形,则可以这样做。这是一个很好的模式。我知道答案看起来过头了,但我认为你会发现它很有效,并且在插入访问你的问卷的代码时非常灵活。