2015-03-05 2 views
1

У меня есть перечисление и структура, как показано ниже.C# struct with enum For Form Position

public enum appedges{Left = 0, Top = 1,Right = 2, Bottom = 3}

public struct edges{ public int X, Y, wide, len;}

Эта структура была объявлена ​​/ инстанцирован четыре раза (LeftEdge, RightEdge, TopEdge, BottomEdge) со значениями, определенными для всех его членов. На основе событий Onclick кнопки будет выбрано определенное значение перечисления. И Исходя из этого, мне нужно выбрать одну из заявленных STRUCT экземпляров, чтобы установить свойство формы, как показано ниже:

так, если значение перечисления было выбран «Top», то

if (_side == appedges.Top) 
{ 
    this.Location = new Point(TopEdge.X, TopEdge.Y); 
    this.Height = TopEdge.len; 
    this.Width = TopEdge.wide; 
} 

Аналогично, для другие значения перечисления (Left, Bottom, Right ...), мне пришлось бы писать один и тот же цикл «IF» с разными экземплярами структуры.

Я думаю, что может быть простой способ выполнить это. Я имею в виду: обобщение способа использования экземпляров struct. Я не хочу каждый раз устанавливать свойства Form для каждого цикла «IF». Надеюсь, вы, ребята, поняли мою мысль.

Я новичок в C#. Итак, я борюсь с этим. Если вы можете помочь, это будет здорово!

ThankYou :)

ответ

3

Вы можете использовать словарь, где вы инициализировать Edge за AppEdge:

var positions = new Dictionary<AppEdge, Edge> 
{ 
    { AppEdge.Left, new Edge { X = 0, Y = 0, ... } }, 
    { AppEdge.Top, new Edge { X = 0, Y = 0, ... } }, 
    { AppEdge.Right, new Edge { X = 0, Y = 0, ... } }, 
    { AppEdge.Bottom, new Edge { X = 0, Y = 0, ... } }, 
}; 

Затем используйте _side в качестве индекса для поиска Edge с в этом словаре:

var edge = positions[_side]; 
this.Location = new Point(edge.X, edge.Y); 
this.Height = edge.len; 
this.Width = edge.wide; 

И учитывая, что вы новичок в C#, взгляните на naming guidelines for C#.

+0

Awesome :) Я знал о словарях раньше ... но не думал, что смогу использовать его таким образом. Спасибо за помощь. Очень ценю !! – 911Rapid