C# 入門指南 - 座標定位

GUI 座標的原點在左上角,往下為 X 軸,往右為 Y 軸




我們得替每個視窗元件設定 Location 屬性 (property) ,這樣才能把視窗元件放到適合的位置。例如, guidemo.cs 中原有 Button 、 TextBox 、 ListBox 三個元件,我們把 Button 設定在座標 (10, 10) , TextBox 設定在座標 (10, 45) ,而 ListBox 設定在座標 (10, 80)
using System.Drawing;
using System.Windows.Forms;

public class Form1 : Form {
    public Button button1;
    public TextBox textbox1;
    public ListBox listbox1;
        
    public Form1() {
        this.button1 = new Button();
        this.button1.Location = new Point(10, 10);
        this.button1.Text = "Click Me!!";
        
        this.textbox1 = new TextBox();
        this.textbox1.Location = new Point(10, 45);
        this.textbox1.Text = "Input Something.....";
                
        this.listbox1 = new ListBox();
        this.listbox1.Location = new Point(10, 80);
        this.listbox1.Items.Add("Choice 1");
        this.listbox1.Items.Add("Choice 2");
        this.listbox1.Items.Add("Choice 3");
        this.listbox1.Items.Add("Choice 4");
        
        this.Controls.Add(button1);
        this.Controls.Add(textbox1);
        this.Controls.Add(listbox1);
    }

    [STAThread]
    static void Main() {
        Application.Run(new Form1());
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:guidemo.cs
    功能:示範 C# 程式 
    作者:張凱慶
    時間:西元 2012 年 10 月 */


Location 屬性需要用 Point 型態 (type) 的物件 (object) , Point 類別 (class) 放在 System.Drawing 裡面,因此要先 using 進來
using System.Drawing;


建立 Button 後,就設定 Location 屬性,需要先建立 Point 的物件,並把座標值當參數 (parameter) ,最後我們連帶設定 Button 的按鈕文字,也就是設定 Text 屬性
this.button1 = new Button();
this.button1.Location = new Point(10, 10);
this.button1.Text = "Click Me!!";


TextBox 亦同,另外我們也設定文字方塊中的預設文字
this.textbox1 = new TextBox();
this.textbox1.Location = new Point(10, 45);
this.textbox1.Text = "Input Something.....";


ListBox 中,我們另外加入四個選項,這是用 Items 屬性呼叫 Add() 方法 (method)
this.listbox1 = new ListBox();
this.listbox1.Location = new Point(10, 80);
this.listbox1.Items.Add("Choice 1");
this.listbox1.Items.Add("Choice 2");
this.listbox1.Items.Add("Choice 3");
this.listbox1.Items.Add("Choice 4");


編譯執行,結果如下



嗯,看起來是不是整齊、美觀多了,可是除了文字方塊可以輸入文字外,按鈕、選項都沒反應,這是因為我們還沒設定相關事件 (event) 處理唷!


中英文術語對照
屬性property
型態type
物件object
類別class
參數parameter
方法method
事件event


您可以繼續參考
GUI 篇


相關目錄
回 C# 入門指南
回 C# 教材
回首頁


參考資料
http://msdn.microsoft.com/zh-tw/library/ms229601.aspx
http://msdn.microsoft.com/zh-tw/library/ettb6e2a.aspx
http://msdn.microsoft.com/zh-tw/library/ty26a068.aspx
http://msdn.microsoft.com/zh-tw/library/tkzw7bw7.aspx

2 則留言:

Unknown 提到...

請問範例是針對windows嗎?mac下無法compile這個sample
terminal會顯示
error CS8027: Couldn't run pkg-config: ApplicationName='pkg-config', CommandLine='--libs dotnet', CurrentDirectory=''
用Mono提供的Xamarin Studio這個IDE也不行

Kaiching Chang 提到...

這是在 Mac 編譯的唷,不過系統如果經過變動,例如安裝 mono 後又安裝其他軟體,就容易出現 error CS8027 的問題,疑似是 mono 的 bug ,建議完全移除 mono 後重新安裝,然後編譯看看,如果問題還是一樣,暫時換 MS-Windows 練習也許會比較 ok 唷! ^_^