我應該每次按下按鈕時隨機更改三個標籤的位置(例如:label1
將在label2
的位置)。我如何獲得標籤的位置?
因此,我決定採取標籤的位置並將它們存儲在一個數組中。但是,我不知道如何獲得標籤的位置。我試過說double position = label1.location.X;
但它沒有奏效。
我應該每次按下按鈕時隨機更改三個標籤的位置(例如:label1
將在label2
的位置)。我如何獲得標籤的位置?
因此,我決定採取標籤的位置並將它們存儲在一個數組中。但是,我不知道如何獲得標籤的位置。我試過說double position = label1.location.X;
但它沒有奏效。
獲得使用值
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);
}
}
然後只需使用randomizer將值設置爲Point(x,y)。請注意,您還應該檢查窗口的寬度和高度,並減去標籤的寬度和高度,以避免超出窗口邊界。
您可以訪問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
編輯:使用一種更簡單的屬性是位置
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.location(v=vs.110).aspx
如果您只需看看的msdn文檔即可你會發現有很多方法來獲取這些數據。
界限給出的位置,但你不能實際移動與那些控制。您必須將位置設置爲新點或更改Label.Left和Label.Top。 – TyCobb
Label.Left, Label.Top
位置只是一個無法修改的Point結構。
這是winforms嗎? asp.net? wpf? –
@MauricioGracia winforms – Sarah
標籤是否位於表單上的固定位置,您只需交換訂單? – Brian