2013-04-02 5 views
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 формы открытой непосредственно ниже основная форма - но вместо этого он открывает здесь:

a

New «s StartPosition устанавливается в Manual.

Я думаю, что я неправильно определяю тип. Как я могу правильно определить его?

Или, в противном случае, в чем проблема, или я приближаюсь к этому неправильно?

ответ

7

Вы хотите Enum, а не класс.

enum WindowPosition { 
    Right, 
    Bottom 
} 

Reference его следующим образом: WindowPosition.Right

Что вы делаете, объявляя класс, то говорят, что имеет 2 статические члены одного и того же типа, как это, что не является совершенно необоснованным для некоторых разных приложений, но для этого это не сработает.

Причина, по которой он не работает с вашим кодом, заключается в том, что ни одному из них не присвоено ничего, и поэтому оба они возвращают null, что сделает WindowPosition.Right == WindowPosition.Left return true.

+0

Спасибо, Роб, отлично работает! Я соглашусь, как только смогу :) Ваше объяснение тоже оценено. –

+0

Удачи вам в кодировании! –

Смежные вопросы