1、點擊button按鈕,選中“屬性”中的閃電標志,輸入click的動作名字(假如命名為OnClick),

2、雙擊click處,在彈出的`Form1.cs`中輸入以下第三行代碼。得到如圖結果。
```
private void OnClick(object sender, EventArgs e)
{
MessageBox.Show("確認提交", "應用程序", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
```

3、在app中,默認中 `Program.cs`中的`static void Main()`開始運行。所以如果要更換啟動窗口,則可以在該位置更換其他窗口form的名字。

4、需要注意的是,上述動作被記錄在`Form1.cs`文件中的
`private void InitializeComponent()`中,不要隨意改動。
5、同一個窗體應用中要設置先啟動哪一個?:
啟動窗體
比如在EMS-windows-app這個應用中,有很多窗體,想先啟動“審核登記”。這時候找到 EMS-windows-app 里面的 Program.cs,修改其中的代碼, 改成“new 審核登記()”即可:
`Application.Run(new 審核登記( ) );`


# 設置窗體屬性

#
5、form 窗體是一個對象,所以在編輯按鈕時,需要創建對象。
# 窗體事件

## 父窗體、子窗體
也就是單擊打開第二個窗體以后第二個窗體總在第一個窗體內顯示
父窗體:`isMdiContainer` 屬性為 true 即可。
子窗體:父窗體設置完成后,“屬性”中無法直接設置子窗體,需要通過編寫代碼設置`MdiParent`屬性。代碼:
```
Form2 frm2 = new Form2();
frm2.Show(); //顯示窗體
frm2.MdiParent = this; //注意不要寫成midparent
```
## 平鋪窗口:
```
layoutMdi( Mdilayout. )
```
arrangelcons =>
cascade =>
titlehorizontal => 水平平鋪
titlevertical => 垂直平鋪
## button 控件點擊后生成新 txt 輸入框:
```
private void button1_Click_1(object sender, EventArgs e)//用于點擊時生成一個txt框
{
TextBox txt = new TextBox(); //創建對象txt
txt.Location = new Point(0, 0);//初始化坐標位置
this.Controls.Add(txt); // this.Controls指的是button這個控件,觸發的事件是add新增
}
```
## TextBox 控件
只讀文本、密碼、多行

默認只能水平改變大小,這時候把multiline屬性設置為 true(多行),即可垂直方向改變大小。
passwordChart屬性中,可以將輸入的密碼顯示成**星號。
可以直接拖動創建,也可以寫代碼:
```
private void button1\_Click(object sender, EventArgs e)
{
TextBox txt = new TextBox();
this.Controls.Add(txt); //this.control的意思是,這個 button 控件中添加。
}
```

## radioButton
單選。一般用 check 屬性:

```
private void radioButton_admin_CheckedChanged(object sender, EventArgs e)
{
if(radioButton_admin.Checked)
{
MessageBox.Show ("以管理員身份登錄");
}
}
```

## checkBox
復選

## Rich TextBox——超鏈接
> 如果要設置 richtextbox 控件的字體樣式等,可以在 form 窗口的 load 中編寫代碼。

滾動條、字體屬性、超鏈接、段落格式
### 1、設置字體樣式
```
private void 審核意見richTextBox1_TextChanged(object sender, EventArgs e)
{
審核意見richTextBox1.SelectionFont = new Font("宋體", 15, FontStyle.Bold);
審核意見richTextBox1.SelectionColor = Color.Red;
}
```
### 2、設置超鏈接
在 richtextbox (這個名字是控件的名字)中輸入以下代碼:
```
richtextbox.Text = "http://www.baidu.com";
```
在轉到屬性-事件中,找到 LinkClicked,雙擊,再輸入以下代碼:
```
System.Diagnostics.Process.Start(e.LinkText); // 該命名空間是系統設置好的
```


## comboBox控件
dropdownStyle屬性
selectedValueChanged事件

錯誤:
若輸入`messageBox.Show(comboBox1. selectedItem)`;
參數1:無法從“object”轉換為“string”。可直接改成:
`MessageBox.Show("崗位:" + comboBox1.SelectedItem);`
即可。
## listBox

listBox.items.add 屬性
listBox.items.remove 屬性
selectionMode: one \ multisimple \ multiextended ( 意思是用戶可以用 shift 或 control 鍵盤來選中)
## GroupBox
分組
將“密碼、登錄、退出”等直接拖動到新建的“系統登錄”框中,就變成一個組了。


## listview
列表試圖空間。用于顯示帶圖標的項的列表。類似 windows 資源管理器右邊窗口的用戶界面。

其中smallimagelist、largeimagelist、stageimagelist屬性與imageList 組件——圖片存儲 一起搭配使用。

直接在items里面添加圖片即可。
先設置group屬性,然后雙擊 form 窗口,在 load 里面添加代碼。

代碼如下:將設置好的組件里面的元素進行分類。

## treeview控件
樹形結構
### 新建元素

可直接在屬性中設置,也可以在 form 窗口的 load 代碼區輸入:
新建對象
```
private void 審核登記_Load_1(object sender, EventArgs e)
{
TreeNode tr1 = treeView1.Nodes.Add("總工辦");
}
```
刪除的話,可以用 remove。
### 獲取信息:
雙擊控件,在afterSelect 中輸入
```
MessageBox.Show(e.Node.Text); //這里的 e 就是上一行的 e
```

> node其實就是屬性中的 Nodes(如圖1)。點擊后進行Node相關設置,如圖2。所以如果將代碼中的 Node.Text 換成 Node.Tag,則會顯示我們在 Tag 中填入的“備注”(如圖3)。
>
>
>
>
>
### 添加圖標:
imageList屬性設置為 true。然后與imageList組件配合。
## Timer組件
計時器,時間間隔以interval屬性定義,以毫秒為單位。

Enabled 與 start 和 stop 互相替換。enable 為 true,就等于 start。



## menustrip

菜單欄。如果要設置“文件”快捷菜單,在屬性=>text => “文件(&F)”即可。

## toolstrip
工具欄。默認添加到 menustrip 下面。 可以顯示圖標和可以顯示文字,右擊,在 display 選項中進行設置。


## statusStrip
狀態欄。

比如添加時間:在 form 窗體的 load 語句中,添加:
```
toolStripStatusLabel1.Text = dateTime.Now.ToString();
```

## 消息框 messagebox
可以通過提示來一步步設置。

## 打開對話框 控件
openFileDialog
指定打開位置:`openFileDialog.InitialDirectory = "C:\\";`
指定文件類型:`openFileDialog.Filter = "文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc"`
若要所有格式:`openFileDialog.Filter = "所有文件(*.*)|*.*"`


> 最后記得寫上 openFile.Dialog.ShowDialog();
## 另存為對話框 控件
saveFileDialog
同上

## 瀏覽文件夾 控件
foldBrowserDialog

`textBox.Text = folderBrowserDialog1.SelectedPath;`
# 使用右擊快捷鍵功能
添加contextMenustrip 控件,并在 datagridview 的屬性中把contextmenustrip控件關聯上。
- 幫助文檔 microsoft helo viewer
- c#開發環境及visual studio安裝注意事項
- c#程序基本結構-基本語法
- Q1: public static void main(String[] args) 是什么意思
- Q2: c#命名空間+Main方法
- Q3:注釋+命名規則+代碼規則
- Q4: c#語句 system => console
- Q5: 數據類型 .net
- Q5: 常用名字、變量、運算符
- Q6: 對話窗輸入-屬性
- Q7: 遞歸
- Q8:決策分支、條件判斷語句 if 語句
- Q9:數組
- Q10:字符串
- Q11:對象、類、訪問權限、靜態動態函數
- Q12:方法及參數——繼承于類
- Q13:構造函數
- Q14:繼承——base 關鍵字
- Q15:多態、虛方法、接口
- Q16:創建窗體應用、控件
- Q17:Ado數據訪問、連接 sqlserver 數據庫
- Q18: 讀取數據command + DataRead( )、DataSet + DateAdapter
- Q19: Entity Framwork、entity 與 ADO.net的區別
- Q20: 對話框、文件、文件夾
- Q21: 導入excel數據、更新到 dbo 數據庫中
- Q26: 獲取 excel 中每個 sheet 的表名
- Q22: 兩個窗體之間數據+方法傳遞
- Q23: 數學對象
- Q24: c#網站編寫
- Q25: visual studio2017如何查看幫助
- Q27: c# dictionary 字典對象
- Q28: 數組與dataTable互相轉化