c# winform控件及窗體屬性


窗體是程序與用戶交互的可視界面,窗體也是對象,窗體類定義了生成窗體的模版,實例化一個窗體類就產生了一個窗體。

.NET框架類庫的System.Windows.Forms命名空間中定義的Form類是所有窗體類的基類。

1、常用屬性

屬性:圖標、標題、位置、背景等可在窗體屬性面板設置,也可以代碼實現。

(1)Name屬性:用來獲取或設置窗體的名稱,在應用程序中可通過Name屬性來引用窗體。
(2)WindowState屬性:用來獲取或設置窗體的窗口狀態。取值有三種:Normal(窗體正常顯示)、Minimized(窗體以最小化形式顯示)和Maximized(窗體以最大化形式顯示)。
(3)StartPosition屬性:用來獲取或設置運行時窗體的起始位置。
(4)Text屬性:該屬性是一個字符串屬性,用來設置或返回在窗口標題欄中顯示的文字。
(5)AcceptButton屬性:該屬性用來獲取或設置一個值,該值是一個按鈕的名稱,當按Enter鍵時就相當於單擊了窗體上的該按鈕。
(6)CancelButton屬性:該屬性用來獲取或設置一個值,該值是一個按鈕的名稱,當按Esc鍵時就相當於單擊了窗體上的該按鈕。
(7)Modal屬性:該屬性用來設置窗體是否為有模式顯示窗體。如果有模式地顯示該窗體,該屬性值為true;否則為false。當有模式地顯示窗體時,只能對模式窗體上的對象進行輸入。必須隱藏或關閉模式窗體(通常是響應某個用戶操作),然后才能對另一窗體進行輸入。有模式顯示的窗體通常用做應用程序中的對話框。
(8)ActiveControl屬性:用來獲取或設置容器控件中的活動控件。窗體也是一種容器控件。
(9)ActiveMdiChild屬性:用來獲取多文檔界面(MDI)的當前活動子窗口。
(10)AutoScroll屬性:用來獲取或設置一個值,該值指示窗體是否實現自動滾動。如果此屬性值設置為true,則當任何控件位於窗體工作區之外時,會在該窗體上顯示滾動條。另外,當自動滾動打開時,窗體的工作區自動滾動,以使具有輸入焦點的控件可見。
(11)Enabled屬性:用來獲取或設置一個值,該值指示控件是否可以對用戶交互作出響應。如果控件可以對用戶交互作出響應,則為true;否則為false。默認值為true。
(12)KeyPreview屬性:用來獲取或設置一個值,該值指示在將按鍵事件傳遞到具有焦點的控件前,窗體是否將接收該事件。值為true時,窗體將接收按鍵事件,值為false時,窗體不接收按鍵事件。
(13)ShowInTaskbar屬性:用來獲取或設置一個值,該值指示是否在Windows任務欄中顯示窗體。
(14)Visible屬性:用於獲取或設置一個值,該值指示是否顯示該窗體或控件。值為true時顯示窗體或控件,為false時不顯示。
(15)Capture屬性:如果該屬性值為true,則鼠標就會被限定只由此控件響應,不管鼠標是否在此控件的范圍內。
2、常用方法

自身窗體 使用this 例如 this.hide();

其它窗體

Form2 f2 = new Form2();
f2.Show();

下面介紹一些窗體的最常用方法。
(1)Show方法:該方法的作用是讓窗體顯示出來,其調用格式為:
窗體名.Show();
其中窗體名是要顯示的窗體名稱。
(2)Hide方法:該方法的作用是把窗體隱藏出來,其調用格式為:
窗體名.Hide();
其中窗體名是要隱藏的窗體名稱。
(3)Refresh方法:該方法的作用是刷新並重畫窗體,其調用格式為:
窗體名.Refresh();
其中窗體名是要刷新的窗體名稱。
(4)Activate方法:該方法的作用是激活窗體並給予它焦點。其調用格式為:
窗體名.Activate();
其中窗體名是要激活的窗體名稱。
(5)Close方法:該方法的作用是關閉窗體。其調用格式為:
窗體名.Close();
其中窗體名是要關閉的窗體名稱。
(6)ShowDialog方法:該方法的作用是將窗體顯示為模式對話框。其調用格式為:
窗體名.ShowDialog();

 

3.常用事件

為窗體、控件添加事件在屬性面板的“事件”選項卡里操作。

(1)Load事件:該事件在窗體加載到內存時發生,即在第一次顯示窗體前發生。
(2)Activated事件:該事件在窗體激活時發生。
(3)Deactivate事件:該事件在窗體失去焦點成為不活動窗體時發生。
(4)Resize事件:該事件在改變窗體大小時發生。
(5)Paint事件:該事件在重繪窗體時發生。
(6)Click事件:該事件在用戶單擊窗體時發生。
(7)DoubleClick事件:該事件在用戶雙擊窗體時發生。
(8)Closed事件:該事件在關閉窗體時發生。

4. 添加事件

以窗體Load事件為例:

Load(加載)事件發生於Form窗體的加載時候,其設置步驟如下。
(1)打開VS2008,新建一個Windows窗體應用程序,並命名為FormEventTest。
(2)打開其Form1的屬性窗口,切換到“事件”選項卡(一個閃電標志)
(3)找到Load事件項,然后雙擊進入該事件代碼編輯文件Form1.cs,為其編寫代碼。

5.繼承窗體

繼承窗體就是根據現有窗體的結構創建一個與其一樣的新窗體,這種從現有窗體繼承的過程稱為可視化繼承。

兩種方式創建繼承窗體

編程方式:from2:from1

繼承選擇器:

 

6.控件

窗體由控件構成,控件分常用控件和高級控件,常用控件主要有文本類控件、選擇類控件及分組控件等。

C#控件的基類是System.Windows.Forms命名空間下的Control類

文本類控件:Label、Button、TextBox、RichTextBox

選擇類控件:CheckBox、ComboBox、ListBox、RadioButton

分組控件:GroupBox、Panel、FlowLayoutPanel、SplitContainer、TabControl、TableLayoutPanel

7. 特殊實現

1)啟動歡迎界面

將該界面設置為歡迎界面,添加Timer控件,倒計時數秒后啟動主界面

 

2)多窗體應用程序設置啟動窗體

在Program.cs中,改變Run方法的參數

public static void Run(From mainFrom);

例如:Application.Run(new Form1());

其中,Form1為窗體名

 

3)程序退出

窗體相關事件

this.hide(); //隱藏

this.show(); 顯示

this.Close();  關閉,注意會關閉整個應用程序

Application.Exit(); 關閉,注意會關閉整個應用程序

4接受按鈕、取消按鈕

acceptbutton   cancelbutton

5)啟動瀏覽器打開網頁

System.Diagnostics.Process.Start(e.LinkText); //e.LinkText換成具體鏈接

(6)判斷某字符串是否為數字型

            int a;
            if(Int32.TryParse(textBox1.Text, out a))
            {
                //MessageBox.Show("數字");
            }
            else
            {
                MessageBox.Show("非數字");
            }

 

8. 文本框 TextBox

密碼文本框:設置文本框的PasswordChar屬性,或UseSystemPasswordChar屬性

多行文本框:Multiline屬性設為True

突出顯示:設置SelecttionStart、SelectionLength屬性

9. RichTextBox

有格式文本控件,用於顯式、輸入和操作帶有格式的文本,比如實現顯式字體、顏色、鏈接、從文件加載文本、及嵌入的圖形、撤銷重復編輯操作以及查找字符串功能。

10.下拉組合框 ComboBox

(1)DropDownStyle:設置樣式

Simple:列表部分總是可見

DropDown:為默認值,可編輯文本框

DropDownList:不能編輯文本框

(2)SelectAll() 方法選擇可編輯框的所有文本

 

11 復選框 CheckBox

CheckState屬性:是否選中,值為Checked、Unchecked

 

12.單選按鈕

checked屬性:是否選中職位True,

 

13.數值選擇控件

(1)用於顯示和輸入數值,提供上下箭頭,用戶可以直接輸入,也可以用箭頭修改數值

Maximum:最大值

Mininmun:最小值

Value:值

(2)顯式格式

DecimalPlaces:小數點后位數,默認0

ThousandsSeparater:千分符,默認false

Hexadecimal :十六進制顯式

 

14.列表控件 ListView

(1)添加刪除項目:ListBox控件Items屬性的Add方法、Remove方法

(2)當前選中項目:ListBox的SelectedItem屬性

(3)多選:SelectionMode屬性

MultiExtended(可用Shift、Ctrl鍵)

MultiSimple 多選

One:單選

None:無法選擇

(4)選中的項數

listBox1.SelectedItems.Count.ToString(); 多選情況下

樣式、列標頭、列寬設置

listView1.View = View.Details; //視圖樣式,
listView1.Columns.Add("文件名"); //添加標頭            
listView1.Columns.Add("路徑");
listView1.Columns.Add("大小");
listView1.Columns.Add("創建時間");
listView1.Columns[0].Width = 100; //設置寬度
listView1.Columns[1].Width = 200; //設置寬度
listView1.Columns[2].Width = 100; //設置寬度
listView1.Columns[3].Width = 100; //設置寬度

 

//添加項

listView1.Items.Clear();  //清空

listView1.Items.Add(processes[i].ProcessName);
listView1.Items[listView1.Items.Count - 1].SubItems.Add(processes[i].Id.ToString());

listView1.Items[listView1.Items.Count - 1].SubItems.Add(processes[i].Id.ToString());

listView1.Items[listView1.Items.Count - 1].SubItems.Add(processes[i].Id.ToString());

 

15.分組控件

Panel:

GroupBox:分組框

TabControl:選項卡

(1)為選項卡設置圖標,改變選項卡標題

創建一個windows應用程序,向窗體添加一個ImageList控件,然后像ImageList控件添加圖形列表;

添加一個TabControl控件,將其ImageList屬性設置為ImageList1控件,並將TabPage選項卡的ImageIndex屬性設置為列表中相應圖像的索引。

(2)將選項卡顯示為按鈕

將TabControl控件的Appearence屬性設置為Buttons或FlatButtons,可以將選項卡顯示為按鈕樣式。(三維按鈕、平面按鈕)

tabControl1.Appearance = TabAppearance.Buttons;

(3)在選項卡中新增控件

使用New進行初始化類,調用添加

(4)添加、移除選項卡

添加:TabPages屬性的Add方法

string title = "新增選項卡" + (tabControl1.TabCount+1);
TabPage myTabPage = new TabPage(title);
tabControl1.TabPages.Add(myTabPage);

刪除:TabPages屬性的Remove方法

tabControl1.TabPages.Remove(tabControl1.SelectedTab);

移除所有選項卡:TabPages屬性的clear

(5)DataGridView

列寬設置無效?

需要把列的 AutoSizeMode 屬性設為None,寬度設置才會生效。

列標題居中

dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; //標題居中

列居中對齊

dataGridView1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

如何讓全部列填充滿整個控件?

點擊datagridview右上角的小三角->"編輯列"->選中最后一列->右邊的屬性框有個“布局”->"AutoSizeMode"的屬性,設置它為Fill就Ok了

dataGridView選中的時候選中正行而不是一個單元格

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //選中正行,而非單元格

最左列的賦值

datagridview.Rows[i].HeaderCell.Value

最左列的顯示與改變寬度

dataGridView1.RowHeadersVisible = false; //最左側列 隱藏
dataGridView1.RowHeadersWidth = 60;    //設置寬度

防刪除出錯

int indexid = dataGridView1.CurrentRow.Index; //當前行
            //MessageBox.Show(dataGridView1.Rows.Count.ToString() + indexid.ToString());
            if (indexid < 0 || indexid >= dataGridView1.Rows.Count - 1)
            { }
            else
            {
                if (MessageBox.Show("確定刪除嗎?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                {
                    dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
                }
            }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM