3

在下面的代码中,我试图定义一个自定义类型:

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);
}

该代码应该使New表单直接在主表单下方打开- 但它在此处打开:

一种

NewStartPosition设置为Manual

我认为我不正确地定义了类型。我该如何正确定义它?

或者其他问题是什么,或者我是以错误的方式处理这个问题?

4

1 回答 1

7

你想要一个枚举,而不是一个类。

enum WindowPosition {
     Right,
     Bottom
}

像这样引用它:WindowPosition.Right

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

它不适用于您的代码的原因是因为它们都没有被分配任何东西,因此它们都 return null,这将使WindowPosition.Right == WindowPosition.Leftreturn 为真。

于 2013-04-02T23:41:39.080 回答