1. 程式人生 > >第九周學習內容

第九周學習內容

WinForm:Windows Form,.Net中用來開發Windows視窗程式的技術,無論是控制檯程式,還是ASP.Net都是呼叫.Net框架,因此所有知識點都是一樣的。
新建一個Windows專案:Windows→Windows窗體應用程式
控制元件(Control):視窗上很多元素都是相似的,因此將這些元素抽象為一些類,這些類就叫做控制元件。
識別PowerPoint中的控制元件,按鈕(Button)、文字框(TextBox)、標籤(Label)、單選按鈕(RadioButton)、複選框(CheckBox)。
新增(工具箱)、刪除、移動、縮放控制元件
屬性修改控制元件外觀
控制元件的名字是Name
Text修改按鈕名稱
在事件裡設定促發條件

事件:滑鼠移動到按鈕上的時候顯示“大爺您來了”,離開按鈕的時候顯示“大爺常來呀”。
通過設計器設定屬性、事件的東西存在哪裡?看Designer.cs。
刪除事件響應的方法:先到事件頁籤中刪除屬性,再刪除函式。
拖放控制元件,輸入姓名,點選按鈕,視窗標題顯示問好。設定視窗物件的屬性就可以改變視窗的外觀。點選按鈕呼叫TextBox的Hide方法,呼叫控制元件的方法就可以使得控制元件發生動作。
當用戶點選按鈕的時候Button1_click方法被呼叫,這個方法不是程式設計師呼叫的,而是程式設計師把方法寫好,並且說明“當用戶點選按鈕的時候執行Button1_click方法中的程式碼”,這一點和控制檯程式不同。
方法放在那裡,發生事件的時候框架來呼叫這個方法。button5_Click不是程式設計師呼叫的,而是框架呼叫的。回撥(CallBack)。
控制元件、屬性、事件、事件處理方法、控制元件的名字(控制元件的例項;物件名)
例:

    //只要把事件響應的程式碼放到這裡,然後指定“當用戶點選這個按鈕的時候執行這個方法”
    //不用使用者來呼叫,由。net作業系統來呼叫
    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("我是另外一個按鈕");
    }
    private void button2_Click(object sender, EventArgs e)
    {
        MessageBox.Show("點了一下");
    }
    private void button4_MouseEnter(object sender, EventArgs e)
    {
        button4.Text = "大爺您來啦";
    }
    private void button4_MouseLeave(object sender, EventArgs e)
    {
        button4.Text ="大爺您慢走";
    }

例:簡單的加法計算器,使用者在文字框1、2中輸入兩個數,點選按鈕,在文字框3中顯示兩個數的和。如果1或者2為錯誤的資料格式,則彈出對話方塊提示錯誤。int.TryParse、MessageBox.Show。

private void buttoncalc1_Click(object sender, EventArgs e)
    {
        int i1;
       // i1 = Convert.ToInt32(textBoxNum1 );//別寫成這樣
        if (!int.TryParse(textBoxNum1.Text, out i1))
        {
            MessageBox.Show("請輸入一個數字");
            textBoxNum1.Focus();//讓控制元件獲得焦點
            return;//別忘了return
        }
        int i2;
        if (!int.TryParse(textBoxNum2.Text, out i2))
        {
            MessageBox.Show("請輸入一個數字");
            textBoxNum2.Focus();
            return;
        }
        int i3 = i1 + i2;
        textBoxresult3.Text = Convert.ToString(i3);
    }

例:練習2:頁面上有一張圖片(PictureBox,在Image屬性中載入圖片),預設是隱藏的(Visible=False),使用者在文字框中輸入身份證號(131226198105223452),點選按鈕,如果年齡大於18歲則顯示圖片(Visible=True),否則提示年齡太小。取當前年份:DateTime.Now.Year。

  private void buttonValid_Click(object sender, EventArgs e)
    {
        string id = textBoxId.Text.Trim();
        if (id.Length != 18)//身份證號碼長度為18
        {
            MessageBox.Show("身份證長度不合法");
            return;
        }
        //年份是從6開始長度為4.
        string strYear = id.Substring (6,4);
        int year = Convert.ToInt32(strYear );
        //if (DateTime .Now.Year -year >18 )
        //{
        //    pictureBox1.Visible = true;
        //}
        //else 
        //{
        //    pictureBox1.Visible = false ;
        //}
        pictureBox1.Visible = (DateTime.Now.Year - year > 18);
    }

練習3:頁面上有一個文字框,文字框左側和右側各有一個按鈕,點選左側按鈕文字框中的文字向左迴圈滾動一次,點選右側按鈕文字框中的文字向右迴圈滾動一次。

    private void btnLeft_Click(object sender, EventArgs e)
    {
        string text = textBox.Text;
        char firstChar = text[0];
        string rightPart = text.Substring(1);
        textBox.Text = rightPart + firstChar;
    }
    private void btnRight_Click(object sender, EventArgs e)
    {
        string text = textBox.Text;
        char lastChar = text[text .Length-1 ];
        string leftPart = text.Substring(0, text.Length-1);
        textBox.Text = lastChar + leftPart ;
    }

計時器Timer

Timer。每隔一段時間觸發一個事件。不可視控制元件。
nterval:每隔多長時間幹什麼事
Enable:是否啟用計時器
事件裡Tick:當事件到來時,執行。。
計量單位:ms(毫秒)。 1秒=1000毫秒
例:小時鐘。取當前時間DateTime.Now.ToString();

  private void timer1_Tick(object sender, EventArgs e)
    {
        //MessageBox.Show("到了");
        //.net中日期是DaTeTime型別,DateTime.Now為當前時間
        textBox1.Text = Convert .ToString ( DateTime.Now);

例:按鈕動態變大。

private void timer1_Tick(object sender, EventArgs e)
    {
        if (button1.Width > 200)
        {
            //停止計時器
            timer1.Enabled = false;
            return;
        }
        button1.Width = button1.Width + 5;
        button1.Height = button1.Height + 5;
        //if (button1.Width<200)
        //{
        //    button1.Width = button1.Width + 5;
        //    button1.Height = button1.Height + 5;
        //}

TextBox

文字框的幾種模式:Multiline(多行)、PasswordChar(密碼)
將文字框的PasswordChar設為*就是密碼框效果,將MultiLine屬性設定為true並且將高度拉到合適的大小就是多行效果,textBox4.AppendText(“hello”+"\n")就是附加一行。
控制元件名要有含義、控制元件名字首的“潛規則”。
按鈕Button:btn;文字框TextBox:txt;複選框CheckBox:cb。
控制元件的名字要有意義。
案例1:登入介面。登入錯誤三次退出程式,假設使用者名稱、密碼是admin、888888,不區分大小寫。(易錯點:區域性變數與類變數)
退出程式this.Close()或者Application.Exit()

public partial class Form1 : Form
{
    private  int i = 0;
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        //顯示的視窗就是Form1的物件,視窗不關物件就一直存在
        //int i = 0;//錯
        if (i >= 3)
        {
            MessageBox.Show("錯誤次數過多");
            textBox1.ReadOnly  = true ;//設定不能輸入
            this.Close();//關閉程式
            return;
        }
        if (textBox1.Text == "888888")
        {
            MessageBox.Show("密碼正確");
        }
        else
        {
            MessageBox.Show("密碼錯誤");
            i++;
        }
    }