1. 程式人生 > >Windows視窗程式設計入門(C#版)

Windows視窗程式設計入門(C#版)

這次用C#寫個簡單的視窗程式,這篇文章完全是面向新手的。

我簡單說明一下我們要實現的功能:

有兩個窗體Form1和Form2,這兩個窗體裡面都有一個TextBox和一個Button。

①當單擊Form1裡面的Button時,加載出Form2,同時Form2裡的TextBox內容和Form1裡的TextBox的內容一致;

②當單擊Form2裡面的Button時,銷燬Form2,同時Form1裡的TextBox內容變成Form2裡TextBox的內容。

我們啟動VS,並繪製兩個如下圖所示的窗體


繪製完成後,我們來到Form1.cs中,右擊TextBox選擇屬性


在彈出的視窗中將其Modifiers屬性設定為public


完成後也要將Form2的TextBox也進行同樣的設定。只有這樣兩個窗體中的TextBox才可以相互“看得見”。

設定完成後,我們便可以進行我們的程式碼設計了!

首先我們來到Form1.cs中,雙擊Button1,進入程式碼設計視窗,我們可以看到VS已經幫我們把框架搭好了,直接上手就好嘍!


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplicationTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form_two = new Form2();
            //例項化Form2
            form_two.Show();
            //將例項化的物件顯示出來
            form_two.textBox1.Text = this.textBox1.Text;
            //將Form1裡TextBox的內容賦值給Form2裡TextBox
        }
    }
}

這樣我們執行一下,發現功能①已經可以實現了!


下面繼續實現②中的功能吧,我們選中Form2.cs,雙擊Button1,進入程式碼設計頁面

首次我們要先宣告一個Form1的物件


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplicationTest
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        public Form1 form_one;
        //宣告Form類變數
        private void button1_Click(object sender, EventArgs e)
        {
        }
    }
}

然後我們要回到Form1的程式碼設計視窗,為form_one賦值。


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplicationTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form_two = new Form2();
            //例項化Form2
            form_two.Show();
            //將例項化的物件顯示出來
            form_two.textBox1.Text = this.textBox1.Text;
            //將Form1裡TextBox的內容賦值給Form2裡TextBox
            form_two.form_one = this;
            //將form_one指向Form1視窗
        }
    }
}

然後我們再次回到Form2的程式碼設計介面,實現賦值和銷燬功能


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplicationTest
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        public Form1 form_one;
        //宣告Form類變數
        private void button1_Click(object sender, EventArgs e)
        {
            form_one.textBox1.Text = this.textBox1.Text;
            //將Form2裡TextBox的內容賦值給Form1裡TextBox
            this.Close();
            //將Form2銷燬
        }
    }
}
執行一下,會發現我們的功能已經全部實現了!