错误地定义自定义类型?

Dan*_*ett 3 .net c# winforms

在以下代码中,我正在尝试定义自定义类型:

public class WindowPosition
{
    public static WindowPosition Below;
    public static WindowPosition Right;
}

private void ChildWindow(Form Form, WindowPosition Position)
{
    Form.Location = new Point(
        Position == WindowPosition.Right ? this.Location.X + this.Width : 0,
        Position == WindowPosition.Below ? this.Location.Y + this.Height : 0
    );

    Form.Show();
}

private void buttonNew_Click(object sender, EventArgs e)
{
    ChildWindow(new New(), WindowPosition.Below);
}
Run Code Online (Sandbox Code Playgroud)

代码应该使New表单直接在主窗体下面打开- 但它在这里打开:

一个

New的StartPosition设置为Manual.

我想我正在定义不正确的类型.我该如何正确定义它?

或者问题是什么,或者我是以错误的方式接近这个?

Rob*_*b G 7

你想要一个Enum,而不是一个班级.

enum WindowPosition {
     Right,
     Bottom
}
Run Code Online (Sandbox Code Playgroud)

像这样引用它: WindowPosition.Right

你正在做的是声明一个类,然后说它有2个与它相同类型的静态成员,这对于某些不同的应用程序来说并不完全不合理,但它不适用于此.

它不能与你的代码一起工作的原因是因为它们都没有被分配任何东西,所以它们都返回null,这将使WindowPosition.Right == WindowPosition.Left返回为真.