C#控件基本1


第一大內容窗體:

一、控制標題欄

Text - 控制標題欄的文字

Icon - 控制標題欄的圖標

MaximizeBox - 窗體最大化

MinimizeBox  -窗體最小化

ControlBox - 所有的最大化、最小化、關閉按鈕

 

二、控制背景

BackColor - 控制背景色

BackgroundImage - 背景圖

BackgroundImageLayout - 背景的布局方式

Tile-平鋪;Center-居中;Stretch-拉伸;Zoom-按比例縮放

 

三、控制邊框

FormBorderStyle - 控制邊框的樣式

Sizable-可調邊框;FixedSingle-不可調邊框;None-無邊框。

Size (Width,Height):窗體的大小。

MinimumSize Width  Height)最小的大小

MaximumSize (Width Height) 最大的大小

 

四、控制前景

ForeColor - 文字顏色

Font-文字字體

 

五、輔助屬性:

WindowState - 窗體的啟動狀態。

Normal-設計時的大小。Maximized-窗體啟動最大化。Minimized-啟動最小化。

StartPosition -窗體的啟動位置。

CenterScreen - 在屏幕中央

ShowInTaskbar - 窗體運行時,是否在任務欄顯示。

TopMost - 是否置於頂層顯示

Opacity -- 透明度。100%完全不透明。0%完全透明。

TransparencyKey - 窗體的透明色。

 

案例一:做一個遮罩窗體:

1.把邊框去掉。 FormBorderStyle = none;

2.設為啟動最大化。 WindowState = Maximized

3.設背景色為黑色。 BackColor=black

4.設為頂層窗體 TopMost = true

5.設置不在任務欄顯示。 ShowInTaskbar=false

 

 

技巧:添加一個新窗體並設為啟動窗體:

1.在解決方案管理器的項目右擊,選擇添加-windows窗體。

2.在解決方案管理器中,把Program.cs打開,修改后面的Application.Run().

 

案例二:做一個不規則的窗體:

1.找一個不規則的透明底色的圖片。

2.把窗體背景設為這張圖片。

3.設置窗體的透明色TransparencyKey

4.把邊框去掉。FormBorderStyle=none

 

第二大內容:三個最常用的控件:

標簽:Label

Text - 標簽文字

Image - 圖像

TextAlign - 文字的位置9個位置

ImageAlign - 圖像的位置9個位置

AutoSize - True-自動調整大小,只有一個控制點。False-手動調整大小,有8個控制點。

 

ForeColor——文字色

BackColor——背景色

Font——字體

 

 

按鈕:Button

Text - 按鈕文字

Image - 按鈕圖片

TextAlign - 文字的位置9個位置

ImageAlign - 圖像的位置9個位置

FlatStyle- 按鈕的形態。 Standard-標准。Flat-平面狀態。Popup-稍微凸出一點。

FlatAppearence - 按鈕形成的詳細設置。

ForeColor——文字色

BackColor——背景色

Font——字體

Dock---按鈕占據鎖在空間的位置,fill--占滿位置

(代碼寫的Button btn=new Button ();     btn.Dock = DockStyle.Fill;)

 

注:窗體中有兩個很重要的屬性: AcceptButton,CancelButton分別用來指定兩個按鈕。在窗體上按回車鍵會自動調用AcceptButton中的代碼,按ESC鍵會調用CancelButton的代碼。

 

 

 

 

 

 

 

文本框:TextBox

Text - 按鈕文字

MultiLine-是否是多行文本框。true-多行文本,false-單行文本

PasswordChar-密碼框中的字符樣式

ReadOnly-只讀,不能改

MaxLength-最多輸入多少

ScrollBars----Both出現滾動條

Dock----上下左右中占滿的方式

Anchor---上下左右,選中的方向的距離,將會不隨邊框的改變而改變

 

案例三:做一個登錄窗體,並實現登錄功能。

 

 

單選按鈕+復選按鈕

RadioButtonCheckBox

Text-單選按鈕上的文字

Checked - 單選按鈕是否被選中true/false

Tag - 一般是用保存單選按鈕背后的值。

Image - 圖像 TextAlgin,ImageAlign

Appearance:按鈕外觀。Normal-普通的單選按鈕。Button-按鈕形式的單選按鈕

 

 

下拉列表combobox

       DropDownStyle - DropDown--既可以選,又可以填寫。DropDownList--只能選 

       Items--編輯項(靜態時使用,一般情況下都是用函數代碼連接數據庫里的表)

  使用代碼放:

(1).使用代碼逐項添加

a.造一個實體類 :重寫父類的ToString()方法,返回要顯示的屬性。

b.使用實體造對象

c.把對象添加到下拉列表的items集合中去。

 

案例:把民族表中的數據讀取出來加載到下拉列表中去。

a.准備實體類、鏈接類、數據訪問類。

b.在界面后台代碼中,調用數據訪問類,獲取返回來的民族列表數據。

c.遍歷列表中的每一項,把它每個加進下拉列表的Items集合中。

 

 

(2).直接使用數據綁定

需要用到的屬性:

DataSource - 下拉列表的數據來源,一般是實體類的集合。

DisplayMember - 要作為顯示項的屬性名。

ValueMember - 要作為值項的屬性名。

案例:把民族表中的數據讀取出來加載到下拉列表中去。

a.准備實體類、鏈接類、數據訪問類。

b.調用數據訪問類,把返回來的數據,賦給下拉列表的DataSource

c.設置下拉列表的DisplayMemberValueMember屬性。

 

案例:如何為下拉列表中加上“請選擇”的項

(1).使用代碼逐項添加

只需在逐項添加的代碼之前,加上一個“請選擇”的項即可

(2).直接使用數據綁定

需要事選在數據源(即列表集合)中添加一個“請選擇”的項。綁定即可上去。

 

2.如何把選中項獲取出來。

相關屬性:SelectedItem--選中的項

使用下拉列表的SelectedItem屬性來獲取,獲取出來的類型是Object,需要強制轉換成相應的類型。然后再獲得某相應屬性的值。

 

案例:獲取選中的民族的名稱和Code值出來。

 

 List<ChinaStates> list = new ChinaStatesDA().Select();

//填進去

            list.Insert(0,new ChinaStates(“-1”,”請選擇”));

            Combobox1.DataSource = list;

            Combobox1.DisplayMember = "AreaName";

            Combobox1.ValueMember = "AreaCode";

第一項加“請選擇”,此圖比較全。此圖為取表中數據放到combobox中,下拉列表

以此函數放到整個窗體的Load

 

  private void FillCounty()

        {

            string parent = "";

            if (cbCity.SelectedItem != null)//判斷前面那一個combobox中的數據是否為空

            {

                //取數據

                parent = (cbCity.SelectedItem as ChinaStates).AreaCode;

                //因其需要前面的數據的id引導此combobox中的數據,所以去前一個數據的code

            }

 

            List<ChinaStates> list = new ChinaStatesDA().Select(parent);

            //填進去

            cbCounty.DataSource = list;

            cbCounty.DisplayMember = "AreaName";

            cbCounty.ValueMember = "AreaCode";

        }

 

ComboboxC#中用的主要函數:

 

SelectedItem:獲取或設置當前combobox所選定的項(0,1,2,3....),即第幾項

SelectedIndex:獲取或設置指定當前選定項的索引

            (即當comboBox1.SelectedIndex為多少時,執行什么---相應的函數)

 

 

時間表控件 DateTimePicker

 

Value----時間值---顯示的默認值

 

 

 

 

ListView

主要是用來顯示的控件。

view有五種顯示的視圖LargeIcon大圖標、SmallIcon小圖標、Tile平鋪、List列表、

                       Details詳細(以列顯示的情況,用Details

 

注意:

1.如果要使用Details視圖,一定需要先添加列。

2.進行修改或刪除的時候,一般需要把主鍵放在每個ListViewItemTag里。使用窗體的構造函數把主鍵傳給目標窗體。

 

 

View 屬性五種視圖狀態

SmallImageList,LargeImageList(組件里邊的imagelist,設置兩個,編輯大小和選擇圖像;然后在listview屬性里選擇SmallImageList,LargeImageList,挑選下拉項里邊的大小imagelist

例一:  private void Show()//在listview中顯示表中想要顯示的數據

        {

           listView1.SelectedItems.Clear();

            //取數據

            List<Info> list = new InfoDA().Select();

            //加進去

            foreach (Info data in list)

            {

                ListViewItem li = new ListViewItem(data.Name);

                li.Tag = data.Code;

                li.ImageIndex = 0;//用第幾個圖像,因為imagelist里邊可以放多個圖像

                li.SubItems.Add(data.Sex ? "男" : "女");

                li.SubItems.Add( new NationDA().Select( data.Nation).Name );

                //根據Info表里的nation搜索Nation表里的Name,輸出

                li.SubItems.Add(data.Birthday.ToString("yyyy年MM月dd日"));

                if (data.Sex == true)//呈現分組現象

                {

                    li.Group = listView1.Groups[0];

                }

                else

                {

                    li.Group = listView1.Groups[1];

                }

                listView1.Items.Add(li);//添加到listview中

            }

        }

例二:

   private void ShowAll()

        {

            listView1.SelectedItems.Clear();

            List<TeacherData> list = new TeacherDA().Select();

            ShowSelect(list);

        }

 

        private void ShowSelect(List<TeacherData> list)

        {

            listView1.Items.Clear();

            if (list == null)

                return;

            foreach (TeacherData da in list)

            {

                ListViewItem li = new ListViewItem(da.Tname);

                li.Text = da.Tname;

                li.SubItems.Add(da.Tsex);

                li.SubItems.Add(da.Tbirthday.ToString("yyyy年MM月dd日"));

                li.SubItems.Add(da.DepartmentData.Name);

                listView1.Items.Add(li);

 

            }

        }

 

 

 

 

 

 

FullRowSelect - 選擇整行,鼠標點擊

GridLines -  是否顯示格式,網格式的顯示方式

HoverSelection--鼠標移動上去就有顏色變化,表示被選中,易觀看數據

HotTracking--鼠標選中后移開,有顏色變化(顏色變淡)--------------------

-----------------------------HoverSelectiontrue時方可使用

SelectedItems - 選中項的集合

    Tag - 項的值

ImageIndex - 項所使用的圖片索引。——需要事先給ListView設置SmallImageList和                                                                                       LargemageList

 

Columns - 列的集合。

Items - 項的集合。

Groups- 組的集合---NameText

 

 

事件:SelectIndexChanged---------選中發生更改

 

 

傳出主鍵值,給窗體二:

 

窗體一:

Button按鈕--- 

private void button2_Click(object sender, EventArgs e)

        {

            if (listView1.SelectedItems.Count > 0)

            {

                string key = listView1.SelectedItems[0].Tag.ToString();

                Form2 f2 = new Form2(key);

                f2.Show();

            }

        }

 

窗體二:

private string _Key = "";

public Form2(string key)//構造函數

            : this()

        {

            _Key = key;//得到主鍵值,_Key可當成主鍵值來用

        }

 

Listview主要用到的C#函數:

SelectedItems:獲取在控件中選定的項

Items:獲取包含空間中所有項的集合

 

 

 

 

DataGridView顯示網格中可以自定義數據的行和列(不全)

 

Anchor----定義邊框距離窗體的邊的距離

AutoSizeColumnsMode--確定可見列的自動調整大小模式----fill

 

 

 

 

 

 

對話框:

 

一、提示對話框:

DialogResult result = MessageBox.Show("提示文字","標題文字",按鈕設置,圖標設置)

if(result == 枚舉)

{

}

 

二、其它對話框:

(一)ColorDialog

1、屬性:

Color - 選中的顏色。

2、方法:

ShowDialog() - 把顏色對話框顯示出來。返回一個DialogResult對象.

3、案例:

            DialogResult result = colorDialog1.ShowDialog();

            if (result == System.Windows.Forms.DialogResult.OK)

            {

                label1.ForeColor = colorDialog1.Color;

            }

(二)FontDialog

1.屬性:

Font - 選中的字體

2.方法:

ShowDialog() - 把字體對話框顯示出來。返回一個DialogResult對象

3.案例:

            DialogResult result = fontDialog1.ShowDialog();

            if (result == System.Windows.Forms.DialogResult.OK)

            {

                label1.Font = fontDialog1.Font;

            }

(三)OpenFileDialog,SaveFileDialog

1.屬性:

FileName - 打開文件的全名(包括路徑)

InitialDirectory - 初始路徑。默認在“我的文檔”

Filter - 打開過濾。顯示名|通配名|顯示名|通配名  如:文本文件|*.txt|C#源文件|*.cs|所有文件|*.*

2.方法:

ShowDialog() - 顯示打開對話框,返回DialogResult

3.舉例:

            DialogResult result = openFileDialog1.ShowDialog();

            if (result == System.Windows.Forms.DialogResult.OK)

            {

                label1.Text = openFileDialog1.FileName;

            }

(四)FolderBrowserDialog - 路徑選擇對話框

1.屬性

SelectedPath - 選中的路徑。

RootFolder - 默認打開的路徑。

Description - 對話框中的提示信息

 

2.方法

ShowDialog()

3.舉例

            DialogResult result = folderBrowserDialog1.ShowDialog();

            if (result == System.Windows.Forms.DialogResult.OK)

            {

                label1.Text = folderBrowserDialog1.SelectedPath;

            }

 

三、自定義對話框:

自己做個窗體,用來作為對話框顯示出來。

第一大步:做對話框窗體

1.做一個窗體,把要實現的功能做出來。

2.放兩個按鈕,設置這兩個按鈕的DialogResult屬性。

 

 

第二大步:調用對話框顯示,並獲取值。

1.把對話框窗體給new出來。

2.使用對話框窗體的ShowDialog()顯示出來。返回DialogResult對象

3.根據返回的DialogResult,判斷操作。

            TestDialog td = new TestDialog();

            DialogResult result = td.ShowDialog();

            if (result == System.Windows.Forms.DialogResult.OK)

            {

                label1.Text = td.Password;

            }

 

 

 

 

 

 

 

 

 

 

布局:

一、默認布局(空布局):

1.Location - 位置距離上方和左方的距離

2.Anchor - 固定邊距上下左右的距離不變的設置,哪邊被選中,那邊距離邊框的距離就不變

 

二、邊界布局:

Dock - 上右下左中,靠在邊框里邊的相應位置

 

三、網格布局:

TableLayoutPanel控件,使用它來格式化行和列。右上方黑色小三角點擊,編輯行和列

使用內部放置的控件的RowSpanColSpan來設置控件的跨行與跨列。

Column-----跨行

Row------跨列

Appearance-----指示選項卡是繪制成按鈕還是繪制成常規選項卡

 

網格布局:(容器中)tableLayoutPanel

 

用代碼編輯tableLayoutPanel的行和列(在整個窗體的load):

 

 tableLayoutPanel1.ColumnStyles.Clear();//清理原來的列

            tableLayoutPanel1.ColumnCount = 20;//設置新的列(這里的20指的是列數)

            for (int i = 0; i < 20; i++)//循環20次,編輯列的屬性

            {

                ColumnStyle style = new ColumnStyle(SizeType.Percent, 5);

                //列的屬性,括號中第一個數Percent為列按百分比實現寬,第二個數為這個寬占總體的5%

                tableLayoutPanel1.ColumnStyles.Add(style);//添加列

            }

            tableLayoutPanel1.RowStyles.Clear();//清理原來的行

            tableLayoutPanel1.RowCount = 20;//設置新的行(這里的20指的是行數)

            for (int i = 0; i < 20; i++)//循環20次,編輯行的屬性

            {

                RowStyle style = new RowStyle(SizeType.Percent, 5);

                //列的屬性,括號中第一個數Percent為行按百分比實現高,第二個數為這個高占總體的5%

                tableLayoutPanel1.RowStyles.Add(style);//添加行

            }

 

 

 

 

 

 

四、流式布局:

FlowLayoutPanel控件。

它有個重要的屬性:FlowDirection - 流的方向(從左往右,從上往下,從右往左,從下往上)

 

五、卡片布局:

TabControl控件。

它里面包含多個TabPage,放在TabPages集合中。

Appearance------Buttons設置成按鈕形式;FlatButtons設置成平面選項卡;

              Normal正常的圖片顯示形式

Enabled----true可用;false不可用

 

六、分割布局:

SplitContainer控件。把窗口橫向或縱向拆分。

Orientation (選中整個SplitContainer方可出現)

                              - 分割的方向。Vertical縱向分割;Horizontal橫向分割

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

托盤圖標:

 

NotifyIcon - 做拖 盤圖標的。

屬性:

Text - 拖盤文字(即在下方的顯示圖標在鼠標移動上是現實的文字)

Icon - 拖盤圖標(圖像:ico格式)

ContextMenuStrip (屬性)右擊時候的菜單(即點擊圖標右鍵,出現選擇項菜單)。

 

 

右鍵菜單。

ContextMenuStrip(容器)

1.學會編輯菜單項。  是分隔線。

2.如何設置熱鍵  &字母

3.如何設快捷鍵。右擊菜單項,在屬性中選擇ShortCutKey中的組合鍵即可

4.如何給菜單項加圖標?

5.右擊菜單項,選擇屬性,設置Image(菜單選擇項前的圖像)

 

把右鍵菜單掛到拖盤圖標上。

右擊NotifyIcon1,選擇屬性。設置ContextMenuStrip

 

工具條:(容器)ToolStrip

1.會加按鈕並設置按鈕的圖像及文字

2.會調整按鈕的圖像大小。把ToolStripImaegScalingSize調整大。再把每個按鈕的Size屬性設大即可

3.會顯示文字和圖標。DisplayStyle,TextImageRelation這兩個屬性來設置。

 

 

 

 

文件及文件夾操作:

一、流:

文件流:FileStream。用來操作文件。

命名空間:System.IO;

使用流的步驟:——最原生的流的操作。——通用性最強的。

1.創建流。

FileStream fs = new FileStream("文件路徑",FileMode枚舉);

FileMode.Appen - 如果存在,就打開追加;如果不存就新建

FileMode.Create - 如果存在,覆蓋。如果不存在就新建。

FileMode.OpenOrCreate。如果存在就打開,不存在就新建。

2.讀取或寫入流。

 

(1)..寫入流:

 第一步:需要把字符串,變成二進制數組:

 byte[] aaa = System.Text.Encoding.Default.GetBytes(txt.Text);

 第二步:寫入流

     fs.Write(aaa, 0, aaa.Length);

//第一個參數:要被寫進去的二進制數據;

//第二個參數:開始的位置,一般都是0

//第三個參數:要往流里面寫入的長度。一般都是數組的length

 

(2).讀取流:

第一步:准備一個二進制的數組,用來接收二進制數據。

byte[] aaa = new byte[fs.Length];  //數組的長度,一般使用流的長度來定義,因為這個數組就是用來存儲流中的數據的。

第二步:使用進行讀取,把讀出來的內容放在上面的二進制數組中。

fs.Read(aaa,0,aaa.Length);

//第一個參數:被讀出來的二進制數據;

//第二個參數:開始的位置,一般都是0。從哪開始讀

//第三個參數:要讀取的長度。一般都是數組的length。即流的長度

 

第三步:把讀出的二進制數組變成字符串。

string s = System.Text.Encoding.Default.GetString(aaa);

 

3.關閉流。

fs.Close();

 

文件操作時,防止內存泄漏的方法:

法一:try...finally

法二:using(){ }

案例:

        private void btnSave_Click(object sender, EventArgs e)

        {

            FileStream fs = null;

            try

            {

                //創建流

                fs  = new FileStream("aaa.txt", FileMode.Create);

 

                //把文本框的字符串,變成1010101二進制byte[]

                byte[] aaa = System.Text.Encoding.Default.GetBytes(txt.Text);

                //寫入流

                fs.Write(aaa, 0, aaa.Length);

            }

            finally

            {

                //關閉流

                if (fs != null)

                {

                    fs.Close();

                }

            }

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            //創建流

            using (FileStream fs = new FileStream("aaa.txt", FileMode.Open))

            {

                //准備一個空的二進制數組,用來接收讀取出來的內容

                byte[] aaa = new byte[fs.Length];

                //讀取流

                fs.Read(aaa, 0, aaa.Length);

                //把二進制轉為字符串

                txt.Text = System.Text.Encoding.Default.GetString(aaa);

 

                //關閉流

                fs.Close();

            }

        }

 

對於文本(字符串)形式的文件流可以使用StreamWriter和StreamReader來簡化操作。

1.創建流

FileStream fs = new FileStream("bbb.txt",FileMode.Create);

//FileStream fs = new FileStream("bbb.txt",FileMode.Open);

2.套讀取器或寫入器。

StreamWriter writer = new StreamWriter(fs);

//StreamReader reader = new StreamReader(fs);

3.使用讀取器或寫入器對文件流進行操作。

writer.Writer("字符串");

//string s = reader.ReadToEnd();

4.關閉讀取器和文件流。

writer.Close();

//reader.Close();

fs.Close();

 

對於文本(字符串)形式的文件還可以再簡化。——不用寫流的創建,關閉,直接使用流的讀取器和寫入器

        private void button4_Click(object sender, EventArgs e)

        {

            StreamWriter writer = new StreamWriter("ccc.txt",true, Encoding.Default);

            writer.Write(txt.Text);

            writer.Close();

        }

 

        private void button5_Click(object sender, EventArgs e)

        {

            StreamReader reader = new StreamReader("ccc.txt",Encoding.Default);

            txt.Text =  reader.ReadToEnd();

            reader.Close();

        }

 

新建文本文檔:

 

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;

using System.IO;

namespace WindowsFormsApplication1

{

    public partial class Form2 : Form

    {

        public Form2()

        {

            InitializeComponent();

        }

        private string _FileName="";

        private void 新建NToolStripMenuItem_Click(object sender, EventArgs e)

        {

            txt.Text = "";

            _FileName = "";

        }

 

        private void 打開OToolStripMenuItem_Click(object sender, EventArgs e)

        {

            DialogResult result = open.ShowDialog();

            if (result == System.Windows.Forms.DialogResult.OK)

            {

                _FileName = open.FileName;

                StreamReader reader =  null;

                try

                {

                    reader = new StreamReader(_FileName, Encoding.Default);

                    txt.Text = reader.ReadToEnd();

                }

                catch (Exception ex)

                {

                    MessageBox.Show(ex.Message,"提示", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }

                finally

                {

                    if (reader != null)

                    {

                        reader.Close();

                    }

                }

 

            }

        }

 

        private void 另存為AToolStripMenuItem_Click(object sender, EventArgs e)

        {

            SaveAsFile();

        }

 

        private void SaveAsFile()

        {

            DialogResult result = save.ShowDialog();

            if (result == System.Windows.Forms.DialogResult.OK)

            {

                _FileName = save.FileName;

                SaveFile();

            }

        }

 

        private void SaveFile()

        {

            StreamWriter writer = null;

            try

            {

                writer = new StreamWriter(_FileName, false, Encoding.Default);

                

                writer.Write(txt.Text);

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }

            finally

            {

                if (writer != null)

                {

                    writer.Close();

                }

            }

        }

 

        private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)

        {

            if (_FileName.Trim().Length == 0)   //新建的還沒有保存過的

            {

                SaveAsFile();

            }

            else  //打開的或者已經保存過的

            {

                SaveFile();

            }

        }

 

        private void 退出XToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Close();

        }

 

        private void 全選AToolStripMenuItem_Click(object sender, EventArgs e)

        {

            txt.SelectAll();

        }

 

        private void 剪切XToolStripMenuItem_Click(object sender, EventArgs e)

        {

            txt.Cut();

        }

 

        private void 粘貼PToolStripMenuItem_Click(object sender, EventArgs e)

        {

            txt.Paste();

        }

 

        private void 復制CToolStripMenuItem_Click(object sender, EventArgs e)

        {

            txt.Copy();

        }

 

        private void 字體ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            DialogResult result = font.ShowDialog();

            if (result == System.Windows.Forms.DialogResult.OK)

            {

                txt.Font = font.Font;

            }

        }

 

        private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)

        {

 

        }

    }

}

 

 

 

 

 

控件的動態生成與操作:

事件三要素:事件源,事件數據,事件處理程序

//sender-事件源,EventArgs-事件數據,函數體就是處理程序

        private void button1_Click(object sender, EventArgs e)

        {

            Button btn = sender as Button; //把事件源具像化。

            MessageBox.Show(btn.Text); //顯示事件源的文本。

        }

 

 

 

 

 

 

多按鈕自動生成(模擬掃雷系統):

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 計算器去

{

    public partial class 多按鈕操作 : Form

    {

        public 多按鈕操作()

        {

            InitializeComponent();

        }

 

        private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e)

        {

            

        }

 

        private void 多按鈕操作_Load(object sender, EventArgs e)

        {

            Shezhitablelayout();

            Addbutton();

        }

        private void Addbutton()

        {

            Random rand=new Random ();

            for(int i=1; i<401;i++)

            {

                Button btn=new Button ();

                btn.Text = i.ToString();

                btn.Dock = DockStyle.Fill;

                tableLayoutPanel1.Controls.Add(btn);

                if (rand.Next(100) % 5 == 0)

                {

                    btn.Tag = 10;

                }

                else if (rand.Next(100) % 7 == 0)

                {

                    btn.Tag = 50;

                }

                else if (rand.Next(100) % 9 == 0)

                {

                    btn.Tag = 100;

                }

                else { btn.Tag = 0; }

                btn.Click += btn_Click;

            }

        }

 

        void btn_Click(object sender, EventArgs e)

        {

            Button btn = sender as Button;

            int shu = (int)btn.Tag;

            if (shu != 0)

            {

                btn.BackColor = Color.Red;

                btn.ForeColor = Color.Yellow;

                btn.Text = btn.Tag.ToString();

            }

            btn.Enabled = false;

        }

        private void Shezhitablelayout()

        {

            tableLayoutPanel1.ColumnStyles.Clear();//清理原來的列

            tableLayoutPanel1.ColumnCount = 20;//設置新的列(這里的20指的是列數)

            for (int i = 0; i < 20; i++)//循環20次,編輯列的屬性

            {

                ColumnStyle style = new ColumnStyle(SizeType.Percent, 5);

                //列的屬性,括號中第一個數Percent為列按百分比實現寬,第二個數為這個寬占總體的5%

                tableLayoutPanel1.ColumnStyles.Add(style);//添加列

            }

            tableLayoutPanel1.RowStyles.Clear();//清理原來的行

            tableLayoutPanel1.RowCount = 20;//設置新的行(這里的20指的是行數)

            for (int i = 0; i < 20; i++)//循環20次,編輯行的屬性

            {

                RowStyle style = new RowStyle(SizeType.Percent, 5);

                //列的屬性,括號中第一個數Percent為行按百分比實現高,第二個數為這個高占總體的5%

                tableLayoutPanel1.RowStyles.Add(style);//添加行

            }

        }

    }

}

 

加載數據庫中的數據,如果內容非常多,就顯示出滾動條。類似於QQ好友列表的效果。

1.先放一個Panel在窗體中Dock布局一下。

2.在這個Panel里面放一個FlowLayoutPanel,設置它從上到下流式布局。

3.外面的Panel需設置AutoScroll=true .超出范圍就顯示滾動條。**

(AutoScroll指示控件內容大於它的可見區域時是否自動顯示滾動條)

4.里面的FlowLayoutPanel,設置它Dock=Top,AutoSize=true

(AutoSize指控件是否自動調節自身的大小以適應其內容的大小)

 

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;

using DA;

using Data;

 

namespace WindowsFormsApplication1

{

    public partial class Form5 : Form

    {

        public Form5()

        {

            InitializeComponent();

        }

 

        private void Form5_Load(object sender, EventArgs e)

        {

            flowLayoutPanel1.Controls.Clear();

 

            List<CarData> list = new CarDA().Select();

 

            foreach (CarData data in list)

            {

                CheckBox cb = new CheckBox();

                cb.Text = data.Name;

                cb.Tag = data.Code;

                cb.Width = 200;

                cb.Appearance = Appearance.Button;

 

                flowLayoutPanel1.Controls.Add(cb);

            }

        }

    }

}

 

 

 

 

 

窗體類型:(重,0515AM,不熟)

SDI  MDI

單文檔窗體界面,多文檔窗體界面

 

一、單文檔窗體界面:

有一個主窗體,其它的窗體是輔窗體和對話框。

主窗體一旦關掉,整個程序全部結束。

 

案例一:如何做登錄?

1.確定好主窗體。在Program.cs文件中的Main函數,使用Application.Run()啟動主窗體。

Application.Run(new Main());

2.做一個登錄窗體。

登錄驗證完成后,不要關閉窗體,也不要顯示主窗體。只需要給this.DialogResult賦個值即可。

        private void button1_Click(object sender, EventArgs e)

        {

            //驗證用戶名和密碼是否正確

            if (textBox1.Text == "aaa" && textBox2.Text == "bbb")

            {

                this.DialogResult = System.Windows.Forms.DialogResult.OK;

            }

            else

            {

                textBox1.Text = "";

                textBox2.Text = "";

            }

        }

3.在Program.cs的Main函數中,在Application.Run()運行主窗體之前,啟動登錄窗體(用對話框的形式啟動)

如果對話框返回成功的標識時,就運行下面的Application.Run();

            Form1 f = new Form1();

            DialogResult result = f.ShowDialog();

            if (result == DialogResult.OK)

            {

                Application.Run(new Main());

            }

 

二、多文檔窗體界面:

一個父窗體,里面包含多個子窗體。子窗體無法移到窗體外面,父窗體關掉子窗體全部關閉。

1.確定父窗體。設置父窗體的屬性:IsMdiParent = true

2.做一個子窗體。

3.在窗體的代碼中,實例化子窗體。

4.設置子窗體的屬性:MdiParent,設置成父窗體對象

ChildForm f = new ChildForm();

            f.MdiParent = this; //這里的this代表的就是父窗體對象。

5.顯示子窗體

f.Show();

 

父窗體中的重要屬性:

IsMdiParent - 是否是父窗體 bool

MdiChildren - 所有的子窗體的集合。 Form[]

ActiveMdiChild - 當前正在頂層的子窗體。 Form

 

案例一:使用菜單添加多個子窗體,關閉所有子窗體,關閉當前子窗體。

案例二:只生成一個子窗體。如果已經有了一個子窗體的話,就不再添加新的子窗體。

 


免責聲明!

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



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