3

In the following code, I'm trying to define a custom type:

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

The code is supposed to make the New form open directly below the main form - but instead it's opening here:

a

New's StartPosition is set to Manual.

I think I'm defining the type improperly. How can I properly define it?

Or otherwise what is the problem, or am I approaching this the wrong way?

4

1 に答える 1

7

クラスではなく、列挙型が必要です。

enum WindowPosition {
     Right,
     Bottom
}

次のように参照します。WindowPosition.Right

あなたがしているのは、クラスを宣言し、それと同じ型の2つの静的メンバーがあると言っています.これは、いくつかの異なるアプリケーションにとって完全に不合理ではありませんが、これでは機能しません.

コードで機能しない理由は、どちらにも何も割り当てられていないため、どちらも を返し、 trueを返すnullようにするためです。WindowPosition.Right == WindowPosition.Left

于 2013-04-02T23:41:39.080 に答える