《C#入门经典(中文第四版)》第二部分Winform窗体学习笔记
---------------------------------------------------------------------------------------------------------
A1 ………… DateTimePicker 类
A2 ………… Bitmap 类
A3 ………… ImageList 类
A4 ………… Clipboard 类
A5 ………… IDataObject 接口
A6 ………… vScrollBar 类
A7 ………… NumericUpDown 类
A8 ………… ToolTip 类
A9 ………… SoundPlayer 类
G1 ………… ListView 类
G2 ………… ListViewItem 类
G3 ………… TreeView 类
G4 ………… TreeNode 类
G5 ………… Keys 枚举
G6 ………… InputLanguage 类
G7 ………… ImeMode 枚举
G8 ………… SendKeys 类
G9 ………… Cursor 类
Cursors 类
U1 ………… Screen 类
U2 ………… MessageBox 类
U3 ………… DataGridView 类
DataGridViewCellStyle 类
DataGridViewCell 类
DataGridViewCellCollection 类
DataGridViewColumn 类
DataGridViewColumnCollection 类
DataGridViewRow 类
DataGridViewRowCollection 类
DataGridViewSelectedRowCollection 类
举例:清空数据和导入数据的方法
U4 ………… ContextMenuStrip 类
ToolStripItemCollection 类
ToolStripItem 类
ToolStripMenuItem 类
U5 ………… Application 类
U6 ………… Help 类
U7 ………… SystemInformation 类
U8 ………… PropertyGrid 类
U9 ………… Webbrowser 类
Ua ………… HtmlDocument 类
Ub ………… HtmlElement 类
--------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A1个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示一个 Windows 控件,该控件用来让用户选择日期和时间并以指定的格式显示此日期和时间。
2. DateTimePicker 属性:
dateTimePicker1.Value = dateTimePicker1.Value.AddYears(2);
//如果不赋值的话,那么不会有变化的!
--------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A2个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. Bitmap 是用于处理由像素数据定义的图像的对象。
2. Bitmap 构造函数:
1 Bitmap b = new Bitmap(pictureBox1.Width, pictureBox1.Height);
2 int w = pictureBox1.Width;
3 int h = pictureBox1.Height;
4
5 for (int i = 0; i < pictureBox1.Width;i++ )
6 {
7 w = i;
8 if(i>pictureBox1.Width/2)
9 w = pictureBox1.Width - i;
10
11 for (int j = 0; j < pictureBox1.Height;j++ )
12 {
13 h = j;
14 if (j > pictureBox1.Height/2)
15 h = pictureBox1.Height - j;
16
17 b.SetPixel(i, j, Color.FromArgb(0, w, h));
18 }
19 }
20
21 pictureBox1.Image = b;
1 Bitmap a = new Bitmap(245, 174);
2 for (int i = 0; i < 245; i++)
3 {
4 for (int j = 0; j < 174; j++)
5 {
6 a.SetPixel(i, j, Color.FromArgb(255,i,j));
7 }
8 }
9 pictureBox3.Refresh();
10 pictureBox3.Image = a;
3. Bitmap 方法:
4. Bitmap 属性:
command = axToolbarControl1.CommandPool.get_Command(0); Bitmap uiIcon = new Bitmap(@"E:\PICTURES\头像\海贼王.bmp"); //Bitmap uiIcon = Bitmap.FromHbitmap((IntPtr)command.Bitmap); uiIcon.Save(@"F:\Desktop\1.bmp");
效果:
左下角一个变成了透明的了,提取的是左上角第一个像素点的颜色来实现的!
--------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A3个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 提供管理 Image 对象集合的方法。无法继承此类。
2. ImageList 属性:
--------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A4个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 提供将数据置于系统剪贴板中以及从中检索数据的方法。 此类不能被继承。
2. Clipboard 方法(s):
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A5个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 为传送数据提供与格式无关的机制。
2. IDataObject 方法:
IDataObject d = Clipboard.GetDataObject(); //从剪贴板上获取对象
if (d.GetDataPresent(DataFormats.Text))
{
textBox1.Text = (string)d.GetData(DataFormats.Text); //粘贴剪贴板上的文字
}
1 private void button1_Click(object sender, EventArgs e)
2 {
3 OpenFileDialog of = new OpenFileDialog();
4 of.Filter = "Bmp File(*.bmp)|*.bmp|jpg File(*.jpg)|*.jpg|All File(*.*)|*.*";//设置文件类型
5 if (of.ShowDialog() == DialogResult.OK)
6 {
7 Bitmap image = new Bitmap(of.FileName);
8 pictureBox1.Image = image;
9 }
10 }
11
12 private void button2_Click(object sender, EventArgs e)
13 {
14 Clipboard.SetDataObject(pictureBox1.Image);
15 }
16
17 private void button3_Click(object sender, EventArgs e)
18 {
19 IDataObject d = Clipboard.GetDataObject();//从剪贴板上获取对象
20 if (d.GetDataPresent(DataFormats.Bitmap))
21 {
22 pictureBox2.Image = (Bitmap)d.GetData(DataFormats.Bitmap);
23 }
24 }
--------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A6个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示标准的 Windows 垂直滚动条。
2. vScrollBar 属性:
3. vScrollBar 事件:
通过下面的语句,可以实现:点击上面的三角块,Value增加,点击下面的三角块,Value减少,相对于在TextBox中的显示,参考:http://topic.csdn.net
textBox1.Text = (vScrollBar1.Maximum + vScrollBar1.Minimum - vScrollBar1.Value).ToString();
--------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A7个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示显示数值的 Windows 数字显示框(也称作 up-down 控件)。
2. NumericUpDown 属性:
3. NumericUpDown 事件:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A8个 ╠══════════════════════════════════════════════════╣
╚════════╝
ToolTip的使用方法:首先是从工具箱中将 ToolTip 控件拖放到用户窗体上,然后在其他控件的属性中就会增加这样一条属性内容,当鼠标悬停的时候,即可以产生如右图所示的提示效果(内容不同,意思就是那样啦)。
1. 表示一个长方形的小弹出窗口,该窗口在用户将指针悬停在一个控件上时显示有关该控件用途的简短说明。
2. ToolTip 方法:
private void Form1_Load(object sender, EventArgs e) //窗体加载时就写入
{
toolTip1.SetToolTip(this.button1, "点击确定!!"); //给button1设置提示
toolTip1.ToolTipTitle = "提示:嗒嗒"; //给提示设置标题
}
3. ToolTip 属性:
参考:百度分享
--------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A9个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 控制 .wav 文件中的声音播放。
2. SoundPlayer 属性:
3. SoundPlayer 方法:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G1个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示 Windows 列表视图控件,该控件显示可用四种不同视图之一显示的项集合。
2. ListView 属性:
listView1.Columns.Clear();
listView1.Columns.Add("Number", 80);
listView1.Columns.Add("Book", 80);
listView1.Columns.Add("Author", 80);
listView1.Columns.Add("Press", 80);
listView1.Columns.Add("Price", 80);
ListViewItem lvi = new ListViewItem();
lvi.Text = "CCC";
lvi.SubItems.AddRange(new string[] {"A","B","C"}); //string数组
//显示如下
CCC A B C
//Text显示在第一列,接下来的分列在第二列、第三列、第四列!
using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database2.mdf;Integrated Security=True;User Instance=True"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = str;
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
ListViewItem lvi = new ListViewItem();
lvi.Text = reader.GetString(0);
lvi.SubItems.AddRange(new string[]{reader.GetString(1),
reader.GetString(2),
reader.GetString(3),
reader.GetString(4)});
listView1.Items.Add(lvi);
}
}
}
}
3. ListView 方法:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G2个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示 ListView 控件中的项。
2. ListViewItem 属性:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G3个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 显示标记项的分层集合,每个标记项用一个 TreeNode 来表示。
2. TreeView 属性:
TreeNode tn = new TreeNode("Alex"); //增加子节点
TreeNode tn1 = new TreeNode("McDelfino");
treeView1.Nodes.Add(tn); //添加节点,但是节点的Name不能重复,但String可以!
treeView1.Nodes[2].Nodes.Add(tn1);
for (int i = 0; i < 10;i++ )
{
treeView1.Nodes.Add(new TreeNode("Alex"));
}
treeView1.ExpandAll();
3. TreeView 方法:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G4个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示 TreeView 的节点。
2. TreeNode 构造函数:
3. TreeNode 属性:
private void button2_Click(object sender, EventArgs e)
{
TreeNode tn = new TreeNode("Bug"); //增加兄弟节点。
treeView1.SelectedNode.Parent.Nodes.Add(tn);
}
4. TreeNode 方法:
private void button3_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode.Nodes.Count == 0) //先判断没有子节点
{
if (MessageBox.Show("是否删除文件","警告",MessageBoxButtons.OKCancel) == DialogResult.OK)
{
treeView1.SelectedNode.Remove();
}
}
}
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G5个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 此枚举有一个 FlagsAttribute 特性,通过该特性可使其成员值按位组合。
2. Keys 成员:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G6个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 提供方法和字段以管理输入语言。 此类不能被继承。
2. InputLanguage 属性:
private void Form1_Load(object sender, System.EventArgs e)
{//获取输入法信息
//获取系统中已经安装的文字输入法
InputLanguageCollection MyInputs = InputLanguage.InstalledInputLanguages;
//将输入法的名称添加组合框中
foreach (InputLanguage MyInput in MyInputs)
this.comboBox1.Items.Add(MyInput.LayoutName);
//获取当前输入法信息
InputLanguage CurrentInput = InputLanguage.CurrentInputLanguage;
this.textBox1.Text = CurrentInput.LayoutName;
//获取输入法的语言区域
this.textBox3.Text = CurrentInput.Culture.DisplayName;
//获取默认的输入法信息
InputLanguage DefaultInput = InputLanguage.DefaultInputLanguage;
this.textBox2.Text = DefaultInput.LayoutName;
}
private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{//设置当前输入法
//获取选择的输入法
InputLanguage MyInput = InputLanguage.InstalledInputLanguages[this.comboBox1.SelectedIndex];
//设置当前输入法
InputLanguage.CurrentInputLanguage = MyInput;
//获取当前输入法信息
InputLanguage CurrentInput = InputLanguage.CurrentInputLanguage;
this.textBox1.Text = CurrentInput.LayoutName;
//获取输入法的语言区域
this.textBox3.Text = CurrentInput.Culture.DisplayName;
//获取默认的输入法信息
InputLanguage DefaultInput = InputLanguage.DefaultInputLanguage;
this.textBox2.Text = DefaultInput.LayoutName;
}
※ 参考:http://iamgyg.blog.163.com/blog/static/38223257201152323228166/
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G7个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 指定一个值,该值是用来确定在选定了对象时该对象的输入法编辑器 (IME) 的状态。
2. ImeMode 成员:
※ 参考:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G8个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 提供将键击发送到应用程序的方法。
2. SendKeys 方法:
SendKeys.Send("ACxS"); //大小写直接影响到输入的大小写
SendKeys.Send("{+}"); //表示+的输入
键 | 代码 | 键 | 代码 |
Backspace | {BACKSPACE}、{BS} 或 {BKSP} | F1 | {F1} |
Break | {BREAK} | F2 | {F2} |
Caps Lock | {CAPSLOCK} | F3 | {F3} |
Del 或 Delete | {DELETE} 或 {DEL} | F4 | {F4} |
向下键 | {DOWN} | F5 | {F5} |
End | {END} | F6 | {F6} |
Enter | {ENTER} 或 ~ | F7 | {F7} |
Esc | {ESC} | F8 | {F8} |
Help | {HELP} | F9 | {F9} |
Home | {HOME} | F10 | {F10} |
Ins 或 Insert | {INSERT} 或 {INS} | F11 | {F11} |
向左键 | {LEFT} | F12 | {F12} |
Num Lock | {NUMLOCK} | F13 | {F13} |
Page Down | {PGDN} | F14 | {F14} |
Page Up | {PGUP} | F15 | {F15} |
Print Screen | {PRTSC} | F16 | {F16} |
向右键 | {RIGHT} | 数字键加号 | {ADD} |
Scroll Lock | {SCROLLLOCK} | 数字键减号 | {SUBTRACT} |
Tab | {TAB} | 数字键乘号 | {MULTIPLY} |
向上键 | {UP} | 数字键除号 | {DIVIDE} |
键 | 代码 |
Shift | + |
Ctrl | ^ |
Alt | % |
SendKeys.Send("+(EC)"); //按 E 和 C 时同时按住 Shift 键
SendKeys.Send("{LEFT 42}"); //按向左键42次
SendKeys.Send("{h 2}"); //按h键2次
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G9个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 代表用于绘制鼠标指针的图像。
2. Cursor 属性:
private void Form1_Click(object sender, EventArgs e
{
button6.Location = Point.Add(Cursor.Position,new Size(-Left,-Top));
}
3. Cursor 方法:
---------------------------------------------------------------------------------------------------------------
1. 提供由 Windows 窗体应用程序使用的 Cursor 对象的集合。
2. Cursors 属性:
this.Cursor = Cursors.Arrow; this.Cursor = Cursors.WaitCursors;
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U1个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示单个系统上的一个或多个显示设备。
2. Screen 属性:
3. Screen 方法:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U2个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 显示可包含文本、按钮和符号(通知并指示用户)的消息框。
2. MessageBox 方法:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U3个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 在可自定义的网格中显示数据。
int columnIndex = dataGridView1.CurrentCell.ColumnIndex;
int rowIndex = dataGridView1.CurrentCell.RowIndex;
dataGridView1.CurrentCell = dataGridView1[columnIndex - 1, rowIndex - 1]; // 实例[列数, 行数] 可以提取每个cell的值!
2. DataGridView 属性:
' 删除名为"Column1"的列
DataGridView1.Columns.Remove("Column1");
' 删除第一列
DataGridView1.Columns.RemoveAt(0);
' 删除第一行
DataGridView1.Rows.RemoveAt(0);
DataGridViewColumn 类:表示 DataGridView 控件中的列。
dataGridView1.Columns[1].ReadOnly = true; //第二列只读
for (int i = 0; i < selectedRows.Count;i++ ) { DataGridViewRow row = selectedRows[i]; strOID = row.Cells[2].Value.ToString(); //用索引 index OIDList.Add(strOID); }
for (int i = 0; i < selectedRows.Count;i++ ) { DataGridViewRow row = selectedRows[i]; strOID = row.Cells["CITY_NAME"].Value.ToString(); //用列名称 OIDList.Add(strOID); }
dataGridView1.Rows[1].ReadOnly = true; //第二行只读
dataGridView1.DataSource = null;
导入数据的方法:
//导入数据
DataTable table = new DataTable(); //首先创建表格
DataColumn columnID = new DataColumn("ID"); //创建列 ID
DataColumn columnName = new DataColumn("Name"); //创建列 Name
table.Columns.Add(columnID); //增加列 ID
table.Columns.Add(columnName); //增加列 Name
for (int i = 1; i < 10; i++)
{
DataRow row = table.NewRow(); //新建行
row[0] = i.ToString(); //为该行中的第一列添加值
row[1] = "中国" + i.ToString(); //为该行中的第二列添加值
table.Rows.Add(row); //将该行添加到
}
dataGridView1.DataSource = table; //将表加到框架中
dataGridView1.Columns[0].Width = 40; //定义列宽
dataGridView1.ClearSelection(); //清空选择
dataGridView1.Rows[1].Selected = true; //选择第二行
foreach (DataGridViewRow r in dataGridView1.SelectedRows)
{
if (!r.IsNewRow)
{
dataGridView1.Rows.Remove(r);
}
}
DataGridViewSelectedRowCollection selectRows = dataGridView1.SelectedRows; for (int i = 0; i < selectRows.Count;i++ ) { DataGridViewRow row = selectRows[i]; dataGridView1.Rows.Remove(row); }
3. DataGridView 方法:
4. DataGridView 事件:
if (MessageBox.Show("Sure?", "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)
{
e.Cancel = true; //选择取消,则不删除
}
※ http://www.cnblogs.com/peterzb/archive/2009/05/29/1491891.html
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U4个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示快捷菜单。
2. ContextMenuStrip 构造函数:
3. ContextMenuStrip 属性:
4. ContextMenuStrip 方法:
5. ContextMenuStrip 事件:
---------------------------------------------------------------------------------------------------------------
1. 表示 ToolStripItem 对象的集合。
2. ToolStripItemCollection 属性:
3. ToolStripItemCollection 方法:
---------------------------------------------------------------------------------------------------------------
1. 表示对 ToolStrip 或 ToolStripDropDown 可以包含的所有元素的事件和布局进行管理的抽象基类。
---------------------------------------------------------------------------------------------------------------
1. 表示 MenuStrip 或 ContextMenuStrip 上显示的可选选项。虽然 ToolStripMenuItem 对以前版本的 MenuItem 控件的功能进行了替换和添加,但考虑到向后兼容性和将来的使用(如果选择),仍然保留了 MenuItem。(继承自:ToolStripItem 类)
2. ToolStripMenuItem 属性:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U5个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 提供 static 方法和属性以管理应用程序,例如启动和停止应用程序、处理 Windows 消息的方法和获取应用程序信息的属性。 此类不能被继承。
2. Application 属性:
3. Application 方法:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U6个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 封装 HTML 帮助 1.0 引擎。
2. Help 方法:
制作 chm 文件推荐软件:http://www.yyebook.com/
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U7个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 提供当前系统环境的有关信息。包括很多边缘控件的信息!
2. SystemInformation 属性:
this.Height - this.ClientRectangle.Height - SystemInformation.FrameBorderSize.Height
※ 参考:http://blog.sina.com.cn/s/blog_70eaf2a30100o30y.html
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U8个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 提供用于浏览对象属性的用户界面。
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U9个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 使用户可以在窗体内导航网页。
2. Webbrowser 方法:
3. Webbrowser 属性:
4. Webbrowser 事件:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第Ua个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 提供对 WebBrowser 控件承载的 HTML 文档的顶级编程访问。
2. HtmlDocument 方法:
3. HtmlDocument 属性:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第Ub个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 表示网页内的一个 HTML 元素。
2. HtmlElement 方法:
3. HtmlElement 属性:
---------------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第Uc个 ╠══════════════════════════════════════════════════╣
╚════════╝
1. 指定在通知区域中创建图标的组件。无法继承此类。
2. NotifyIcon 方法:
3. NotifyIcon 属性:
4. NotifyIcon 事件:
※ 参考: NotifyICon使用