2013-12-19 4 views
2

Я должен изменить положение трех меток (например: label1 будет находиться в позиции label2) случайным образом каждый раз, когда я нажимаю кнопку.Как я могу получить позицию метки?

Итак, я решил взять расположение меток и сохранить их в массиве. Однако я не знаю, как получить позицию лейбла. Я попробовал сказать double position = label1.location.X;, но это не сработало.

+0

это winforms? asp.net? wpf? –

+0

@MauricioGracia winforms – Sarah

+0

Являются ли ярлыки в фиксированных положениях на форме, и вы просто меняете свой заказ? – Brian

ответ

3

получает значение с помощью

label1.Left, label1.Top 

установите значения с помощью

label1.Location = new Point(x, y); 

Не забудьте включить

using System.Windows.Forms; 
using System.Drawing; // to use System.Drawing.Point(Label.Left, Label.Top) 

Я написал код, который я надеюсь, поможет вам чтобы получить эту идею. Нажмите на ярлык, чтобы получить его координаты.

using System; 
using System.Windows.Forms; 
using System.Drawing; 

class LabelForm : Form 
{ 
    Label label1; 
    // 
    public LabelForm() 
    { 
     label1 = new Label(); 
     label1.Text = "ClickMe"; 
     label1.Location = new Point(10, 10); // This is the place where you set the location of your label. Currently, it is set to 10, 10. 
     label1.Click += new EventHandler(labelClick); 
     Controls.Add(label1); 
    } 
    // 
    static void Main(string[] args) 
    { 
     LabelForm lf = new LabelForm(); 
     Application.Run(lf); 
    } 
    // 
    protected void labelClick(object o, EventArgs e) 
    { 
     // This is how you can get label's positions 
     int left = label1.Left; 
     int top = label1.Top; 
     MessageBox.Show("Left position of the label: " + left 
      + "\nTop position of the label: " + top, 
      "", MessageBoxButtons.OK); 
    } 
} 

Затем просто используйте рандомизатор, чтобы установить значения в Point (x, y). Обратите внимание, что вы также должны проверить ширину и высоту окна и вычесть ширину и высоту вашего ярлыка, чтобы не выйти за границы окна.

1

Вы можете получить доступ к объекту Bounds, это объект типа Rectangle, который имеет ширину, высоту и x, y координаты компонента.

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.bounds(v=vs.110).aspx

http://msdn.microsoft.com/en-us/library/system.drawing.rectangle(v=vs.110).aspx

То есть предполагается, что вы будете работать с классом Winform Label

EDIT: проще свойство использовать это Расположение

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.location(v=vs.110).aspx

Если вы просто просмотрите документы msdn для Label вы найдете множество способов получить эти данные.

+0

Оценки дают местоположение, но вы не можете на самом деле перемещать элемент управления с ними. Вы должны либо установить местоположение на новую точку, либо изменить Label.Left и Label.Top. – TyCobb

1
Label.Left, Label.Top 

Местоположение - это просто структура Point, которая не может быть изменена.

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