《C#入门经典(中文第四版)》第二部分Winform窗体学习笔记
---------------------------------------------------------------------------------------------------------
●·● 目录:
A0 ………… 通用
A1 ………… Form 类
A2 ………… Control 类
A3 ………… MessageBox 类
A4 ………… Button 类
A5 ………… Label 类
LinkLabel 类
A6 ………… TextBox 类
A7 ………… RichTextBox 类
A8 ………… ListBox 类
A9 ………… CheckedListBox 类
G1 ………… ComboBox 类
G2 ………… RadioButton 类
G3 ………… CheckBox 类
G4 ………… TabControl 类
G5 ………… PictureBox 类
G6 ………… Panel 类
G7 ………… MenuStrip 类
G8 ………… ToolStripMenuItem 类
G9 ………… ToolStrip 类
G10 ………… ToolTip 类
U1 ………… ToolStripButton 类
U2 ………… StatusStrip 类
U3 ………… Timer 类
U4 ………… ProgressBar 类
U5 ………… OpenFileDialog 类
U6 ………… SaveFileDialog 类
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A0个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● 通用:
1. 按Ctrl键同时拉动控件,可以复制一个控件。
2. 在Form上点右键》查看代码,或是按F7。F4显示属性。
3. 实现文件夹打开显示功能,类似右键》打开所在文件夹。
System.Diagnostics命名空间:
Process类:提供对本地和远程进程的访问并使您能够启动和停止本地系统进程。
1. 用Explorer.exe打开文件夹:
System.Diagnostics.Process.Start("Explorer.exe",@"D:\DOCUMENTS\");
System.Diagnostics.Process.Start("Explorer.exe",@"D:\DOCUMENTS");
2. 用notepad.exe打开记事本:
System.Diagnostics.Process.Start("notepad.exe",@"F:\Desktop\1.txt");
3. 用Word的快捷方式打开Word文件:
System.Diagnostics.Process.Start(@"F:\Desktop\Word 2010", @"F:\Desktop\1.docx");
4. 用Firefox打开网址:www.baidu.com:
System.Diagnostics.Process.Start(@"C:\Program Files (x86)\Mozilla Firefox\firefox.exe", "www.baidu.com");
4. 建立事件模板,然后调用:由于事件的监视及管理是由Application对象进行的,程序员不需要知道用户何时响应事件或者是响应了什么事件,只需要为事件添加响应方法即可。添加方法”+=“,取消方法”-=“。参数sender为事件发出者;e为事件的附加数据,事件不同,e也不同。
public Form1()
{
InitializeComponent();
textBox2.MouseMove += new MouseEventHandler(textBox_MouseMove); //调用事先建立的模板
textBox3.MouseMove += new MouseEventHandler(textBox_MouseMove); //四个TextBox可以实现相同的功能
textBox4.MouseMove += new MouseEventHandler(textBox_MouseMove); //通过双击Tab键可以自动实现后半部分
textBox5.MouseMove += new MouseEventHandler(textBox_MouseMove);
}
private void textBox_MouseMove(object sender, MouseEventArgs e) //建立事件模板
{
TextBox tb = sender as TextBox;
tb.BackColor = Color.Red;
}
public Form1()
{
InitializeComponent();
textBox1.KeyPress += new KeyPressEventHandler(textBox_KeyPress); //单击tab键出现一行
textBox2.KeyPress += new KeyPressEventHandler(textBox_KeyPress); //双击tab键出现N行
textBox3.KeyPress += new KeyPressEventHandler(textBox_KeyPress);
textBox4.KeyPress += new KeyPressEventHandler(textBox_KeyPress);
}
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < '0' || e.KeyChar > '9') && e.KeyChar != 8 && e.KeyChar != 13)
{
e.Handled = true;
}
}
5. 用代码在Form中写控件,同时可以编写控件数组,例如:
Label[] lbs = new Label[5]; //建立标签控件数组
for (int i = 0; i < lbs.Length; i++)
{
lbs[i] = new Label(); //在声明下Label类
this.Controls.Add(lbs[i]); //将Label加到控件集中
lbs[i].Left = 14;
lbs[i].Top = 30 * i + 14; //设置控件的位置
lbs[i].Width = 400; //设置控件的宽度
}
首先用Label建立数组,接下来遍历数组,给数组的每个要素声明Label,接下来用Controls的Add方法将用代码写的控件添加到控件集中,同时设置控件的位置和长宽。
6. 用代码执行事件:首先是双击控件,生成一个button1_Click(object sender,EventArgs e)的函数,通过代码直接调用这个函数,既可以调用这个事件,说到底就是调用函数。
private void button1_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.URL = musicPath + @"music\1.mp3";
}
private void timer1_Tick(object sender, EventArgs e)
{
button1_Click(button1, e); //通过代码调用按钮单击事件,其他事件调用是类似的!
}
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A1个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● Form 类:
1. Form 属性:
- TopMost:获取或设置一个值,指示该窗体是否应显示为最顶层窗体。
- OwnedForms:获取 Form 对象的数组,这些对象表示此窗体拥有的所有窗体。(先要用AddOwnedForm()方法来添加窗体。)
View Code - 实现跨窗体关闭窗体public void button1_Click(object sender, EventArgs e)
{
Form1 frm1 = new Form1();
if (button1.Text == "开始")
{
this.AddOwnedForm(frm1); //将窗体加入到OwnedForm里面
frm1.Show();
button1.Text = "停止";
}
else
{
foreach (Form frm in this.OwnedForms)
{
frm.Close(); //将所有OwnedForms都删掉
}
button1.Text = "开始";
}
} - AcceptButton:获取或设置当用户按 Enter 键时所单击的窗体上的按钮。
- CancelButton:获取或设置当用户按 Esc 键时单击的按钮控件。
- MaximizeBox:获取或设置一个值,该值指示是否在窗体的标题栏中显示“最小化”按钮。(bool)
- MinimizeBox:获取或设置一个值,该值指示是否在窗体的标题栏中显示“最大化”按钮。(bool)
- MaximumSize:获取窗体可调整到的最大大小。
- MinimumSize:获取窗体可调整到的最小大小。
- ClientSize:获取或设置窗体工作区的大小。窗体工作区的大小是除边框和标题栏外窗体的大小。窗体的工作区是窗体内可放置控件的区域。
- Size:获取或设置窗体的大小。包括外边框!ClientSize要比Size表示的范围小一点。
- Width:
- Height:
- Opacity:获取或设置窗体的不透明度级别。默认值是1,为不透明,0为完全看不见。
- IsMdiContainer:获取或设置一个值,该值指示窗体是否为多文档界面 (MDI) 子窗体的容器。(bool)
- MdiParent:获取或设置此窗体的当前多文档界面 (MDI) 父窗体。(子窗体显示在父窗体内部)
- MdiChildren:获取窗体的数组,这些窗体表示以此窗体作为父级的多文档界面 (MDI) 子窗体。
- Length:获取子窗体的个数。
- ActiveMdiChild:获取当前活动的多文档界面 (MDI) 子窗口。
- BackgroundImage:获取或设置在控件中显示的背景图像。
- Size:获取图片的大小。
- Size:获取图片的大小。
- FormBorderStyle:获取或设置窗体的边框样式。
- None:无边框。
- FixedSingle:固定的单行边框。
- Fixed3D:固定的三维边框。
- FixedDialog:固定的对话框样式的粗边框。
- Sizable:可调整大小的边框。
- FixedToolWIndow:
- SizableToolWindow:
- WindowState:获取或设置窗体的窗口状态。
- Normal,Minimized,Maximized
- KeyPreview:获取或设置一个值,该值指示在将键事件传递到具有焦点的控件前,窗体是否将接收此键事件。 如果窗体将接收所有键事件,则为 true;如果窗体上当前选定控件接收键事件,则为 false。默认为 false。
2. Form 方法:
- Activate:激活窗体并给予它焦点。
- AddOwnedForm:向此窗体添加附属窗体。
- Close:关闭窗体。
- LayoutMdi:在 MDI 父窗体内排列多文档界面 (MDI) 子窗体。MdiLayout 枚举
- Cascade:所有 MDI 子窗口均层叠在 MDI 父窗体的工作区内。
- TileHorizontal:所有 MDI 子窗口均水平平铺在 MDI 父窗体的工作区内。
- TileVertical:所有 MDI 子窗口均垂直平铺在 MDI 父窗体的工作区内。
- ArrangeIcons:所有 MDI 子图标均排列在 MDI 父窗体的工作区内。
- Hide:对用户隐藏控件。
- Show:显示窗体。两个窗体都可以操作!
- ShowDialog:将窗体显示为模式对话框。只能操作对话框窗体!
通过在 Load 事件中修改 Location 可以改变显示的位置! - Focus:用于激活窗体并给予其焦点。
- SetBounds(int x, int y, int width, int height):x和y为窗体位置坐标,width为窗体宽度,height为窗体高度。
- SetDesktopLocation(int x, int y):以桌面坐标设置窗体的位置。
- SetDesktopBounds(int x, int y, int width, int height):以桌面坐标设置窗体的边界。
3. Form 事件:
- Load:第一次显示窗体前发生。
- Move:窗体移动的时候触发。
- Activated:窗体获得焦点(被激活)时引发。
- Deactivate:窗体失去焦点(未激活)时引发。
- FormClosing:在关闭窗体时发生。
其中 e 有两个重要的属性!
Cancel:获取或设置指示是否应取消事件的值。true 则取消关闭动作!
CloseReason:获取一个值,该值指示关闭窗体的原因。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult a;
a = MessageBox.Show("你真的要关闭吗(⊙_⊙?)", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (a == DialogResult.No) //DialogResult枚举的值, 根据上面MessageBox中的按钮来定
{
e.Cancel = true; //单击No, 取消关闭.
}
} - FormClosed:关闭窗体后发生。
- KeyUp:在控件有焦点的情况下释放键时发生。
- KeyDown:在控件有焦点的情况下按下键时发生。
- KeyPress:在控件有焦点的情况下按下键时发生。
※ 可以通过新建一个空的textbox,然后用下面语句来吸走焦点!
textBox1.Focus();
4. Form扩展:
-
添加的窗体Form2,还是一个类,因此不能直接用,还要先new一个才能用,类似下面的例子,要想加载Form2,首先要new一个Form2,然后在用Show方法。
1 Form2 form2 = new Form2();
2 form2.Show(); - 在Form2中调用Form1中的TextBox文本实现,直接调用不能实现,需要在Form1中建立一个新的属性,然后让这个属性返回TextBox的文本。
Form1代码:
private static string bt1; //定义字段
public string BT1 //定义属性获取textBox1的text值
{
get
{
return bt1; //返回字段的值
}
}
public void button1_Click(object sender, EventArgs e)
{
bt1 = textBox1.Text.Trim(); //给字段赋值
}
Form1 frm1 = new Form1(); //先实例化一个Form1
frm1.Show();
MessageBox.Show(frm1.BT1); //调用frm1的public属性BT1 - 通过Form2关闭Form1的方法,如Form属性中OwnedForms的举例。
5. 窗体间的交互:
实现图示:
单独点击红色按钮时候,显示下面的帮助文件!
再次点击红色按钮时,帮助文本框关闭,同时用帮助文本框自带的“×”也可以关闭窗体!
实现代码:
主窗体部分:
Form2 fr2; //定义帮助窗体 public static bool IsHelpClosed = true; //定义全局的static变量,是否手动关闭窗体 private void button4_Click(object sender, EventArgs e) { if (!IsHelpClosed) //若没有手动关闭窗体,则此时关闭窗体 { fr2.Close(); } else //若手动关闭了窗体,此时要打开窗体 { fr2 = new Form2(); fr2.Show(); fr2.Left = this.Left + this.Width + 10; fr2.Top = this.Top; } }
帮助窗体部分:
private void Form2_Load(object sender, EventArgs e) { Form1.IsHelpClosed = false; //窗体加载的时候,给其赋值为未手动关闭 } private void Form2_FormClosed(object sender, FormClosedEventArgs e) { Form1.IsHelpClosed = true; //窗体手动关闭时候,给其赋值为手动关闭 }
※ 参考: C# WinForm 窗体之间传递参数问题总结
6. 实现不同窗体中的控制
如上面例子,在我打开帮助文本框的时候,按钮显示“关闭帮助”;当我关闭帮助文本框的时候,按钮显示“帮助”。问题在于关闭帮助文本框的时候,如何能操作到主窗体的帮助按钮修改为“帮助”呢,这就要要在床架 Form2 的时候后,定义关闭窗体事件!
private void button3_Click(object sender, EventArgs e) { if (!IsHelpClosed) { help.Close(); button3.Text = "帮助"; } else { help = new Helper01(); help.FormClosed += new System.Windows.Forms.FormClosedEventHandler(helpChange); //写事件 help.Show(); help.Left = Left + Width + 10; help.Top = Top + Height / 2 - help.Height / 2; button3.Text = "关闭帮助"; } } private void helpChange(object sender, FormClosedEventArgs e) //事件函数,保证与委托的参数一致 { button3.Text = "帮助"; }
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A2个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● Control 类:
1. 定义控件的基类,控件是带有可视化表示形式的组件。
2. Control 属性:
- Anchor:获取或设置控件绑定到的容器的边缘并确定控件如何随其父级一起调整大小。Top, Left, Bottom, Right -- 若选中Top,则保持与Top的距离不变。
- Dock:获取或设置哪些控件边框停靠到其父控件并确定控件如何随其父级一起调整大小。None, Top, Left, Bottom, Right, Fill -- 适合容器控件。
- → 获取或设置哪些控件边框停靠到其父控件并确定控件如何随其父级一起调整大小。Anchor 和 Dock 属性是互相排斥的。 每次只可以设置一个属性,最后设置的属性优先。
- Cursor:获取或设置当鼠标指针位于控件上时显示的光标。
- Controls:获取包含在控件内的控件的集合。
- Enabled:获取或设置一个值,该值指示控件是否可以对用户交互作出响应。
- Font:获取或设置控件显示的文字的字体。
- Font类:
- Font(Font, FontStyle) 构造函数:字体,字体样式
- Bold:粗体,Italic:斜体,Regular:普通,Underline:下划线,Strikeout:删除线
-
View Code - 实现下划线添加&去除
publicvoid SetFontUnderline()
{
if (richTextBox1.SelectionFont.Underline)
{
Font newFont = new Font(richTextBox1.SelectionFont,
richTextBox1.SelectionFont.Style & ~FontStyle.Underline);
richTextBox1.SelectionFont = newFont;
}
else
{
Font newFont = new Font(richTextBox1.SelectionFont,
richTextBox1.SelectionFont.Style | FontStyle.Underline);
richTextBox1.SelectionFont = newFont;
}
} - 参考:http://topic.csdn.net/t/20061119/17/5169316.html
- Font(FontFamily, Single) 构造函数:字体名称,字体大小
- FontFamily ff = richtextbox.SelectionFont.FontFamily 将RichTextBox中选中文本的FontFamily复制给ff,然后可以将ff用在其他Font构造函数中。
-
View Code - 实现字体大小改变
publicvoid SetFontSize(float size)
{
Font newFont = new Font(richTextBox1.SelectionFont.Name, size);
richTextBox1.SelectionFont = newFont;
}
- Font(FontFamily, Single, FontStyle)构造函数:字体名称,字体大小,字体样式
- ForeColor:获取或设置控件的前景色。
- Padding:获取或设置控件内的空白。
- All,Left,Right,Top,Bottom
- All,Left,Right,Top,Bottom
- Size:获取或设置控件的高度和宽度。
- Height,Width
- TabIndex:获取或设置在控件的容器的控件的 Tab 键顺序。
- TabStop:获取或设置一个值,该值指示用户能否使用 Tab 键将焦点放到该控件上。 (bool)
- Top:顶
- Left:左
- Right:右
- Bottom:底
- Height:高度
- Width:宽度
- Text:文本
- Visible:获取或设置一个值,该值指示是否显示该控件及其所有父控件。
- Tag:获取或设置包含有关控件的数据的对象,Tag可以赋予任何类型的值,例如可以赋予bool类型的值,可以用来记录一个控件是否得到了想要的结果,若是得到了就赋值为true,否则赋值为false,就是一种标签和记录。
3. Control 方法:
- Focus:为控件设置输入焦点。
- PointToScreen(Point p):将指定工作区点的位置计算成屏幕坐标。就是将控件左上角的点转换为屏幕坐标,而参数 p 是一个参考点,一般应为 Point.Empty 这样就可以确切的转为屏幕点了,否则会有偏差的!
pTag.left = button1.PointToScreen(System.Drawing.Point.Empty).X; //按钮左的横坐标 pTag.bottom = button1.PointToScreen(System.Drawing.Point.Empty).Y + button1.Height; //按钮下的纵坐标
- PointToClient:将指定屏幕点的位置计算成工作区坐标。
- FindForm:检索控件所在的窗体。
4. Control 事件:
- Click:单击
- DoubleClick:双击
- KeyDown:当控件有焦点时,按下一个键时引发该事件,这个事件总是在KeyPress和KeyUp之前引发。
- KeyPress:当控件有焦点时,按下一个键时发生该事件,这个事件总是在KeyDown之后、KeyUp之前引发。KeyDown 和 KeyPress的区别是KeyDown传送被按下的键的键盘码,而KeyPress传送被按下的键的char值。
- KeyUp:当控件有焦点时,释放一个键时发生该事件,这个事件总是在KeyDown和KeyPress之后引发。
- MouseClick:单击,释放鼠标触发(左键)
- MouseDown:按下即触发(左右键)
- MouseMove:在鼠标滑过控件时触发
- MouseUp:释放鼠标触发(左右键)
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A3个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● MessageBox 类:
1. 显示可包含文本、按钮和符号(通知并指示用户)的消息框。
2. MessageBox 方法:
- Show(String):显示具有指定文本的消息框。
- Show(String, String):显示具有指定文本和标题的消息框。
- Show(String, String, MessageBoxButtons):
显示具有指定文本、标题和按钮的消息框。-
View Code - 上面举例
privatevoid validateUserEntry()
{
// Checks the value of the text.
if(serverName.Text.Length == 0)
{
// Initializes the variables to pass to the MessageBox.Show method.
string message = "You did not enter a server name. Cancel this operation?";
string caption = "Error Detected in Input";
MessageBoxButtons buttons = MessageBoxButtons.YesNo;
DialogResult result;
// Displays the MessageBox.
result = MessageBox.Show(message, caption, buttons);
if (result == System.Windows.Forms.DialogResult.Yes)
{
// Closes the parent form.
this.Close();
}
}
} - MessageBoxButtons 枚举
- OK,OKCancel,AbortRetryIgnor,YesNoCancel,YesNo,RetryCancel
-
- Show(String, String, MessageBoxButtons, MessageBoxIcon):
在指定对象的前面显示具有指定文本、标题、按钮和图标的消息框。- MessageBoxIcon 枚举
- None,Hand,Question,Exclamation,Asterisk,Stop,Error,Warning,Information
- MessageBoxIcon 枚举
- Show(String, String, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton):
显示具有指定文本、标题、按钮、图标和默认按钮的消息框。- MessageBoxDefaultButton 枚举
- Button1,Button2,Button3
- MessageBoxDefaultButton 枚举
- Show(String, String, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton, MessageBoxOptions):
显示具有指定文本、标题、按钮、图标、默认按钮和选项的消息框。 - 参考:http://zyq5510806.blog.163.com/blog/static/122738986200911185925316/
- Show方法的返回值为DialogResult枚举,因此可以通过根据返回的DialogResult枚举值,来获取用户的按键!!!上面的FormClosing事件有演示这个方法。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A4个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● Button 类:
1. Button 属性:
- FlatStyle:按钮的样式。
- FlatStyle 枚举:Flat、Popup、Standard、System
- FlatAppearance:获取用于指示选中状态和鼠标状态的边框外观和颜色。
BorderColor:获取或设置按钮周围的边框的颜色。
BorderSize:获取或设置一个值,该值指定按钮周围的边框的大小(以像素为单位)。
MouseDownBackColor:获取或设置在控件边框内按下鼠标时按钮工作区的颜色。
MouseOverBackColor:获取或设置当鼠标指针位于控件边框内时按钮工作区的颜色。
【制作自定义按钮】=> 通过FlatStyle中选择Flat,FlatAppearance中选择BorderColor、MouseDownBackColor、MouseOverBackColor为背景颜色,BorderSize为0。通过改变图片的颜色或是增加对比度、减少亮度,来实现按钮的效果。 - Image:获取或设置显示在按钮控件上的图像。
- 使用 Image 类赋值
- FromFile(String):从指定的文件创建Image:"F:\Desktop\1.jpg"。(s)
- 使用 Image 类赋值
- ImageAlign:获取或设置按钮控件上的图像对其方式。
2. Button 方法:
- PerformClick:生成按钮的 Click 事件。
3. Button 事件:
- MouseDown:当鼠标指针位于控件上并按下鼠标键时发生。
- MouseUp:在鼠标指针在控件上并释放鼠标键时发生。
- GotFocus:在控件接收焦点时发生。
- LostFocus:当控件失去焦点时发生。
参考:http://www.docin.com/p-222459647.html
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A5个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● Label 类:
1. Label 属性:
- Left:标签控件距离左边的像素。
- Top:标签控件距离顶边的像素。
- Height:标签控件的高度。
- Width:标签控件的宽度,对于代码写的标签控件,要将Width设置大点,否则有些内容不会显示出来。
View Code - 标签数组1 Label[] lbs = new Label[5]; //建立标签控件数组
2 for (int i = 0; i < lbs.Length; i++)
3 {
4 lbs[i] = new Label(); //在声明下Label类
5 this.Controls.Add(lbs[i]); //将Label加到空间集中
6 lbs[i].Left = 14;
7 lbs[i].Top = 30 * i + 14; //设置控件的位置
8 lbs[i].Width = 400; //设置控件的宽度
9 }
10 lbs[0].Text = "1、仅限汉字输入;";
11 lbs[1].Text = "2、字体为“微软雅黑,小四”;";
12 lbs[2].Text = "3、汉字的字数不大于11个。";
13 lbs[3].Text = "4、";
14 lbs[4].Text = "5、"; - BorderStyle:指定标签边框的样式。
- FlatStyle:
- LinkArea:(只用于LinkLabel)文本中显示为链接的部分。
- Start:
- Length:
- LinkColor:(只用于LinkLabel)链接的颜色。
- VisitedLinkColor:(只用于LinkLabel)用户单击LinkLabel后控件的颜色。
- TextAlign:获取或设置标签中文本的对齐方式。(ContentAlignment枚举)
---------------------------------------------------------------------------------------------------------
●·● LinkLabel 类:
1. LinkLabel 使用举例:
主要是通过点击链接进入到新的页面,包括点击网址进入到网页以及点击邮件地址进入发邮件的页面等。
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { System.Diagnostics.Process.Start("http://www.nmemc.gov.cn/"); //直接以默认浏览器打开网址 } private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { System.Diagnostics.Process.Start("MailTo:bnli@nmemc.gov.cn"); //直接打开Outlook,并准备发送邮件 }
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A6个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● TextBox 类:
1. TextBox 属性:
- CharacterCasing:这个值表示TextBox是否会改变输入的文本大小写
- Lower,Normal,Upper
- PasswordChar:设置密码。
- Modifier:修饰语。
- Public,Protected,Protected Internal,Internal,Private(默认)
- MaxLength:指定输入文本的最大字符长度。
- Multiline:多行显示。(bool)
- ReadOnly:表示文本是否为只读。
- WordWrap:指示多行文本框控件在必要时是否自动换行到下一行的开始。
- SelectedText:在文本框中选择的文本。
- SelectionLength:选择的字符数。
- SelectionStart:被选中文本的开头。
- ScrollBars:获取或设置哪些滚动条应出现在多行 TextBox 控件中。None, Vertical, Horizontal, Both
- Lines:获取或设置文本框控件中的文本行。textBox1.Lines = new string[] { "abcd", "efg", "hijklmn" };
2. TextBox 事件:
- TextChange:当Text内容发生变化的时候发生。
- KeyPress:
- KeyPressEventArgs 类
- private void textBoxAge_KeyPress(object sender, KeyPressEventArgs e)
- (属性)KeyChar:获取或设置与按下的键对应的字符。
- 8→退格 13→回车 48→0 65→A 97→a
- (属性)Handled:true,删除KeyPress的值,false则打印出KeyPress的值。
-
private void textBoxSize_KeyPress(object sender, KeyPressEventArgs e)
{
// Remove all characters that are not numbers, backspace, or enter.
if ((e.KeyChar < 48 || e.KeyChar > 57) &&
e.KeyChar != 8 && e.KeyChar != 13)
{
e.Handled = true;
}
else if (e.KeyChar == 13)
{
// Apply size if the user hits enter
TextBox txt = (TextBox)sender;
if (txt.Text.Length > 0)
ApplyTextSize(txt.Text);
e.Handled = true;
this.richTextBoxText.Focus();
}
}
- Enter:接触时候出发
- Leave:离开时候出发
- Validating:CausesValidation属性设置为true时才会有机会触发
- Validated:
- → 这4个事件按照列出的顺序引发。它们统称为“焦点事件”,当控件的焦点发生改变时引发,但有两个例外。Validating 和 Validated仅在控件接收了焦点,且其CausesValidation属性设置为true时引发。接收焦点的控件引发事件的原因是有时即使焦点改变了,我们也不希望验证控件的有效性。它的一个示例是用户单击了Help按钮。
- → private void textBoxOccupation_Validating(object sender, CancelEventArgs e)
- → 其中sender就是通过TextBox显式转换的textBoxOccupation,可以这样定义:TextBox tb = (TextBox)sender;
- → 然后可以像用textBoxOccupation一样的用tb。其他几个用法相似。
- → 参考:http://blog.sina.com.cn/s/blog_6116673a0100fpeo.html
- → 可以通过建立一个通用的Validating事件,然后通过调用,来实现其他窗口的Validating事件,实现代码的重用。
View Code - 建立事件调用事件
public Form1()
{
InitializeComponent();
this.buttonOK.Enabled = false;
// Tag values for testing if the data is valid
this.textBoxAddress.Tag = false;
this.textBoxAge.Tag = false;
this.textBoxName.Tag = false;
this.textBoxOccupation.Tag = false;
// Subscriptions to events
// 调用textBoxEmpty_Validating方法,通过调用可以让这四个TextBox都实现此事件
this.textBoxName.Validating += new CancelEventHandler(textBoxEmpty_Validating);
this.textBoxAddress.Validating += new CancelEventHandler(textBoxEmpty_Validating);
this.textBoxOccupation.Validating += new CancelEventHandler(textBoxOccupation_Validating);
this.textBoxAge.Validating += new CancelEventHandler(textBoxEmpty_Validating);
}
// 定义方法,与Validating事件语法相同
void textBoxEmpty_Validating(object sender, CancelEventArgs e)
{
// We know the sender is a TextBox, so we cast the sender object to that.
TextBox tb = (TextBox)sender;
// If the text is empty we set the background color of the
// Textbox to red to indicate a problem. We use the tag value
// of the control to indicate if the control contains valid
// information.
if (tb.Text.Length == 0)
{
tb.BackColor = Color.Red;
tb.Tag = false;
// In this case we do not want to cancel further processing,
// but if we had wanted to do this, we would have added this line:
// e.Cancel = true;
}
else
{
tb.BackColor = System.Drawing.SystemColors.Window;
tb.Tag = true;
}
// Finally, we call ValidateOK which will set the value of
// the OK button.
ValidateOK();
}- SystemColors 类:每个属性都是Color结构,这种结构是Windows显示元素的颜色。(静态类)
- Window:窗口工作区中背景的颜色。
- Colors 结构:表示一种 ARGB 颜色(alpha、红色、绿色、蓝色)。
- Red,Blue,Green。。。
- Red,Blue,Green。。。
- SystemColors 类:每个属性都是Color结构,这种结构是Windows显示元素的颜色。(静态类)
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A7个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● RichTextBox 类:
1. 表示 Windows 多格式文本框控件。
2. RichTextBox 属性:
- SelectionFont:获取或设置当前选定文本或插入点的字体。
- SelectionColor:获取或设置当前选定文本或插入点的文本颜色。
- SelectionAlignment:获取或设置应用到当前选定内容或插入点的对齐方式。
- HorizontalAlignment 枚举
3. RichTextBox 方法:
- Focus:为控件设置输入焦点。
- LoadFile:将文件的内容加载到RichTextBox控件中。例:richTextBox1.LoadFile(@"F:\Desktop\1.rtf");
richTextBox1.LoadFile(@".\Example.rtf"); 直接存在“.\bin\Debug”文件夹中了 -
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog dia = new OpenFileDialog();
dia.InitialDirectory = @"F:\Desktop";
dia.Filter = "RTR(*.rtf)|*.rtf";
if (dia.ShowDialog() == DialogResult.OK)
{
richTextBox1.LoadFile(dia.FileName);
}
} - SaveFile:将RichTextBox的内容保存到文件。
-
private void button3_Click(object sender, EventArgs e)
{
SaveFileDialog dia = new SaveFileDialog(); //定义保存对话框
dia.Filter = "RTF|*.rtf|WORD|*.doc"; //文件格式过滤
if (dia.ShowDialog() == DialogResult.OK) //选择OK键执行
{
richTextBox1.SaveFile(dia.FileName); //存储缩写文件名的文件
}
}
4. RichTextBox 事件:
- LinkClicked:点击网址链接时候执行的动作。
-
private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
{
System.Diagnostics.Process.Start(e.LinkText); //跳转到指定网址
System.Diagnostics.Process.Start("www.baidu.com"); //自定义网址
MessageBox.Show(e.LinkText); //输出link的字符串
}
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A8个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● ListBox 类:
1. 表示允许单项或多项选择的类表框控件。
2. ListBox 属性:
- Items:获取类表控件项的集合。
- Add:
- AddRange:
- Clear:
- Count:
- Contains:
- IndexOf:
- Insert:
- Remove:
- RemoveAt:
- MultiColumn:多列显示,水平滚动条,否则垂直滚动条。
- SelectedIndex:这个值表示列表框中选中项的基于0的索引。如果列表框可以一次选择多个选项,这个属性就包含选中列表中的第一个选项。
- SelectedItem:在只能选择一个选项的列表框中,这个属性包含选中的选项。在可以选择多个选项的列表框中,这个属性包含选中项中的第一项。
- SelectedItems:获取类表控件项被选中项的集合。
- SelectionMode:选择模式,None,One,MultiSimple,MultiExtended。
- Sort:true排序。
3. ListBox 方法:
- ClearSelected:清除列表框中的所有选项。
- <int> FindString(string s):查找列表框中第一个以指定字符串开头的字符串,例如FindString("a")就是查找列表框中第一个以a开头的字符串。
- <int> FindString(string s, int startIndex):给定起始索引。
- FindStringExact():与FindString类似,但必须匹配整个字符串。
- <int> GetSelected(int index):返回一个表示是否选择一个选项的值。
- SetSelected(int index, bool value):存在且为true,则选中。
- ToString:返回当前选中的选型。
4. ListBox 事件:
- SelectedIndexChanged:在选中选项的索引改变时引发事件。
StringBuilder sb = new StringBuilder();
foreach (object o in this.listBox1.SelectedItems)
{
sb.AppendLine(o.ToString());
}
MessageBox.Show(sb.ToString());
StringBuilder sb = new StringBuilder();
foreach (string s in listBox1.SelectedItems)
{
sb.AppendLine(s);
}
MessageBox.Show(sb.ToString());
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第A9个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● CheckedListBox 类:
1. 显示一个 ListBox,其中在每项的左边显示一个复选框。
2. CheckedListBox 属性:
- CheckOnClick:true时,点击即选中,false,要点两下才选中。
- CheckedIndices:选中索引的集合,int集合。
- CheckedItems:选中项的集合,string集合。
3. CheckedListBox 方法:
- <bool> GetItemChecked(int index):返回指示指定项是否选中的值。
- <CheckState> GetItemCheckState(int index):返回指示指定项是否选中的值。(checked,unchecked,Indeterminate)
- SetItemChecked(int index, bool check):指定项是否选中。
- SetItemCheckState(int index, CheckState):指定项选中,三种状态。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Lists
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Add a tenth element to the CheckedListBox.
this.checkedListBoxPossibleValue.Items.Add("Ten");
}
private void buttonMove_Click(object sender, EventArgs e)
{
// Check if there are any checked items in the CheckedListBox.
if (this.checkedListBoxPossibleValue.CheckedItems.Count > 0)
{
// Clear the ListBox we'll move the selections to
this.listBoxSelected.Items.Clear();
foreach (int i in checkedListBoxPossibleValue.CheckedIndices)
{
MessageBox.Show(i.ToString());
}
// Loop through the CheckedItems collection of the CheckedListBox
// and add the items in the Selected ListBox
foreach (string item in this.checkedListBoxPossibleValue.CheckedItems)
{
this.listBoxSelected.Items.Add(item.ToString());
}
// Clear all the checks in the CheckedListBox
for (int i = 0; i < this.checkedListBoxPossibleValue.Items.Count; i++)
this.checkedListBoxPossibleValue.SetItemChecked(i, false);
}
}
}
}
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G1个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● ComboBox 类:
1. ComboBox 属性:
- SelectedIndex:获取或设置指定当前选定项的索引。
- SelectedItem:获取或设置ComboBox中当前选定的项。
- MaxDropDownItems:获取或设置要在ComboBox的下拉部分中显示的最大项数。
- Items:获取一个对象,该对象表示该ComboBox中所包含项的集合。
- Add:添加一个Item。
- AddRange:添加一个string类型数组。
- Clear:清除所有Item。
- Contains(object value):判断集合中是否存在写入的对象,返回bool。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G2个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● RadioButton 类:
1. 当与其他 RadioButton 控件成对出现时,使用户能够从一组选项中选择一个选项。(放在Panel控件里面)
2. RadioButton 属性:
- Appearance:样式
- AutoCheck:true,用户单击单选按钮时,会显示一个选中记号,false,要在Click事件中写入。
- Checked:是否被选中。(bool)
3. RadioButton 事件:
- CheckChanged:当RadioButton地选中选项发生改变时,引发这个事件。
- Click:每次单击RadioButton时,都会引发该事件。
private void button1_Click(object sender, EventArgs e)
{
foreach (object o in groupBox1.Controls)
{
if (o is RadioButton)
{
if (((RadioButton)o).Checked)
{
MessageBox.Show(((RadioButton)o).Text);
}
}
}
}
private void button1_Click(object sender, EventArgs e)
{
foreach (RadioButton c in groupBox1.Controls) //遍历盒子中的所有RadioButton控件
{
if (c.Checked) //若是被选中,则输出选中控件的Name
MessageBox.Show(c.Name);
}
}
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G3个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● CheckBox 类:
1. 表示用户可以选择和清除的控件。多选按钮。
2. CheckBox 属性:
- Checked:是否被选中。
- CheckState:三种状态,Checked,Indeterminate,Unchecked
- ThreeState:这个属性为false时,用户就不能把CheckState属性改为Indeterminate。可以在代码中改。
StringBuilder sb = new StringBuilder();
foreach (Control ctr in this.Controls)
{
if (ctr is CheckBox)
{
CheckBox ck = ctr as CheckBox;
if (ck.Checked)
{
sb.Append(ck.Text);
}
}
}
this.label1.Text = sb.ToString();
StringBuilder sb = new StringBuilder();
foreach (Control ctr in panel1.Controls)
{
if (ctr is CheckBox)
{
CheckBox ck = ctr as CheckBox;
if (ck.Checked)
{
sb.AppendLine(ck.Text);
}
}
}
MessageBox.Show(sb.ToString());
private void button2_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder(); //建立一个StringBuilder,方便Append
foreach (CheckBox c in groupBox2.Controls) //遍历盒子中的CheckBox
{
if (c.Checked)
{
sb.AppendLine(c.Name); //如果选中,则附加Name
}
}
MessageBox.Show(sb.ToString()); //ToString输出
}
3. CheckBox 事件:
- CheckedChanged:当复选框的Checked属性发生改变时,就引发该事件。
- CheckedStateChanged:当CheckedState属性改变时,引发该事件。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G4个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● TabControl 类:
1. 管理相关的选项卡页集。
2. TabControl 属性:
- Alignment:获取或设置选项卡在其中对齐的控件区域(例如,顶部边缘)。【显示tab的位置】
- <TabPage> SelectedTab:获取或设置当前选定的选项卡页。
- TabCount:获取选项卡条中选项卡的数目。
- TabIndex:获取或设置在控件的容器的控件的 Tab 键顺序。
- TabPages:获取该选项卡控件中选项卡页的集合。
- SelectedIndex:获取或设置当前选定的选项卡页的索引。
- SelectedTab:获取或设置当前选定的选项卡页。
3. TabControl 方法:
- DeselectTab(int index):使指定的选项卡后面的选项卡成为当前选项卡。
private void button1_Click(object sender, EventArgs e)
{
int a;
a = tabControl1.SelectedTab.TabIndex;
label1.Text = a.ToString();
tabControl1.DeselectTab(a);
} - SelectTab(int index): 使指定的选项卡成为当前选项卡。
SelectTab(string tabpagename):名称
SelectTab(TabPage tabpage):TabPage
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G5个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● PictureBox 类:
1. 表示用于显示图像的 Windows 图片框控件。
2. PictureBox 属性:
- SizeMode:改变显示图片的方式,存在一个PictureBoxSizeMode枚举。
AutoSize,CenterImage,Normal,StretchImage(变形),Zoom(缩小)。 - BorderStyle:指示控件的边框样式。
- BackColor:获取或设置控件的背景色。指定为透明色。
pbox.BackColor = Color.Transparent;
- Image:获取或设置由 PictureBox 显示的图像。
- ErrorImage:获取或设置在图像加载过程中发生错误时,或者图像加载取消时要显示的图像。
- ImageLocation:获取或设置要在 PictureBox 中显示的图像的路径或 URL。
- InitialImage:获取或设置在加载主图像时显示在 PictureBox 控件中的图像。
- Location:获取或设置该控件的左上角相对于其容器的左上角的坐标。
- Size:获取或设置控件的高度和宽度。
代码:pbox.Size = new System.Drawing.Size(20, 18); - SizeMode:指示如何显示图像。
StretchImage(完全填充)、AutoSize(正常大小显示)、CenterImage(显示图像的中心部分)、Zoom(缩小或放大完全显示)
3. PictureBox 方法:
- Load(String):通过路径调用图片。
4. PictureBox 事件:
- MouseClick:在鼠标单击该控件时发生。
参数中含有MouseEventArgs e,e可以获取X,Y的值!
代码:Point myPT = new Point(e.X, e.Y); - Click:不具有上面的功能。
※ Properties\Resources.resx可以存储图片资源文件,也可以直接调用。如右图所示:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DrawPeachBlossom
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int flag = 0;//定义一个标识,用来标识画桃花的哪个部分
private void pictureBox2_Click(object sender, EventArgs e)
{
flag = 0;//标识绘制花骨朵
}
private void pictureBox3_Click(object sender, EventArgs e)
{
flag = 1;//标识绘制花蕾
}
private void pictureBox4_Click(object sender, EventArgs e)
{
flag = 2;//标识绘制开花效果
}
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
Point myPT = new Point(e.X, e.Y);//获取鼠标单击位置
PictureBox pbox = new PictureBox();//实例化PictureBox控件
pbox.Location = myPT;//指定PictureBox控件的位置
pbox.BackColor = Color.Transparent;//设置PictureBox控件的背景色
pbox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;//设置PictureBox控件的图片显示方式
switch (flag)//判断标识
{
case 0:
pbox.Size = new System.Drawing.Size(20, 18);//设置PictureBox控件大小
pbox.Image = Properties.Resources._2;//设置PictureBox控件要显示的图像
break;
case 1:
pbox.Size = new System.Drawing.Size(30, 31);//设置PictureBox控件大小
pbox.Image = Properties.Resources._3;//设置PictureBox控件要显示的图像
break;
case 2:
pbox.Size = new System.Drawing.Size(34, 30);//设置PictureBox控件大小
pbox.Image = Properties.Resources._1;//设置PictureBox控件要显示的图像
break;
}
if (e.Button == MouseButtons.Left)//判断是否单击了鼠标左键
{
pictureBox1.Controls.Add(pbox);//将PictureBox控件添加到树枝上
}
}
}
}
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G6个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● Panel 类:
1. 为所有Panel元素提供基类。为RadioButton和CheckBox等提供一个独立的面板。
2. Panel 属性:
- Controls:Panel里面的控件集合。
相关窗体控件:
- GroupBox类:表示一个 Windows 控件,该控件显示围绕一组具有可选标题的控件的框架。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G7个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● MenuStrip 类:
1. 提供窗体的菜单系统。
- &(F) 以F作为快捷键,可以修改任意字母,会自动生成“ (F) ”的样子。主菜单要同时按下Alt键。&File→File
- 一个“ - ”表示一个分割线。
- 菜单名称+“ ... ”表示还有个窗体。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G8个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● ToolStripMenuItem 类:
1. 表示 MenuStrip 或 ContextMenuStrip 上显示的可选选项。
2. ToolStripMenuItem 属性:
- ShortcutKeys:获取或设置与 ToolStripMenuItem 关联的快捷键。
newToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.Z;
//组合按键
newToolStripMenuItem.ShortcutKeys = newToolStripMenuItem.ShortcutKeys & ~Keys.Shift;
//减少按键 - ShowShortcutKeys:是否将快捷键显示在子菜单中。
- CheckOnClick:是否显示选中的√。
- Checked:获取或设置一个值,该值指示是否选中 ToolStripMenuItem。(bool)
- Enabled:获取或设置一个值,该值指示是否已启用控件。(bool)
- Visible:获取或设置一个值,该值指示是否显示该项。(bool)
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第G9个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● ToolStrip 类:
1. 为 Windows 工具栏对象提供容器。
2. ToolStrip 属性:
- GripStyle:柄是否在工具栏的最左侧显示。
- LayoutStyle:控制工具栏上的项如何显示。
- Items:包含工具栏中所有项的集合。
- ShowItemToolTip:允许确定是否显示工具栏上某项的工具提示。
在ToolStrip中可以使用许多控件:http://book.51cto.com/art/200901/105510.htm
---------------------------------------------------------------------------------------------------------
╔═════════╗
╠════╣ 第G10个 ╠══════════════════════════════════════════════════╣
╚═════════╝
●·● ToolTip 类:
1. (tip)表示一个长方形的小弹出窗口,该窗口在用户将指针悬停在一个控件上时显示有关该控件用途的简短说明。
2. ToolTip 属性:
- ToolTipTitle:获取或设置工具提示窗口的标题。
- ToolTipIcon:获取或设置一个值,该值定义要在工具提示文本旁显示的图标的类型。
- InitialDelay:获取或设置工具提示显示之前经过的时间。
3. ToolTip 方法:
- SetToolTip:使工具提示文本与指定的控件相关联。
//换行使用 Environment.NewLine 来实现 string tooltip = "line1" + Environment.NewLine + "Line2" + Environment.NewLine + "Line3";
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U1个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● ToolStripButton 类:
1. 表示包含文本和图像的可选的 ToolStripItem。
2. ToolStripButton 属性:
- ToolTipText:获取或设置作为控件的 ToolTip 显示的文本。默认与Text一至。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U2个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● StatusStrip 类:
1. 表示 Windows 状态栏控件。
2. 可以直接建立下面四个控件:
- toolStripStatusLabel类:状态栏标签
- Spring:按照窗体大小布局Text,同时保证Text居中。
- toolStripProgressBar类:状态栏进度条
- toolStripDropDownButton类:下拉按钮*
- toolStripSplitButton类:下拉*
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U3个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● Timer 类:
1. 实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用。
2. Timer 属性:
- Enabled:获取或设置计时器是否正在运行。(默认是False)
- Interval:获取或设置在相对于上一次发生的 Tick 事件引发 Tick 事件之前的时间(以毫秒为单位)。
3. Timer 方法:
- Start:启动计时器。
- Stop:停止计时器。
4. Timer 事件:
- Tick:当指定的计时器间隔已过去而且计时器处于启用状态时发生。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U4个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● ProgressBar 类:
使用思想:对于消耗时间多的运算,需要通过增加进度条来打消用户的焦虑心情,对于进度条的添加主要是在运行开始的时候进度条开始走动,运行完毕后,进度条读完,对于消耗时间多的运算主要是循环上面浪费时间,因此首先需要计算出循环的次数,接下来就可以按照每个循环增加一次了,有些可以直接读取循环次数,对于不能直接读取的,可以先建立一个循环只是用来计算次数的,由于没有其他运算,因此速度很快,几乎可以忽略的!(c# 进度条进度的控制_百度知道)
1. 表示 Windows 进度栏控件。
2. ProgressBar 属性:
- Maximum:获取或设置控件范围的最大值。
- Minimum:获取或设置控件范围的最小值。
- Value:获取或设置进度栏的当前位置。10 → 10%
- Step:获取或设置调用 PerformStep 方法增加进度栏的当前位置时所根据的数量。
- MarqueeAnimationSpeed:获取或设置进度块在进度栏内滚动所用的时间段,以毫秒为单位。
- Style:获取或设置在进度栏上指示进度应使用的方式。
//通过设置ProgressBar的最大值,然后没执行一句话,value增加1,即达到了目的!
using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"))
{
conn.Open();
int lines;
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select count(*) from city";
lines = Convert.ToInt32(cmd.ExecuteScalar());
}
progressBar1.Maximum = lines;
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from city";
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
using (StreamWriter streamWriter = File.AppendText(ofd.FileName))
{
streamWriter.WriteLine(reader.GetInt32(0).ToString() + "|" + reader.GetString(1) + "|" + reader.GetInt32(2).ToString());
progressBar1.Value++;
}
}
}
}
}
3. Progress 方法:
- Increment:按指定的数量增加进度栏的当前位置。
- PerformStep:按照 Step 属性的数量增加进度栏的当前位置。
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U5个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● OpenFileDialog 类:
1. 提示用户打开文件。
2. OpenFileDialog 属性:
- FileName:获取或设置一个包含在文件对话框中选定的文件名的字符串。
- FileNames:获取对话框中所有选定文件的文件名。
- Filter:获取或设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。
举例:dia.Filter = "程序|*.exe|Word|*.docx|Pic|*.jpg" ---- 分成三部分,索引为1,2,3。
要是写不止一个的扩展名,则用“;”隔开即可,英文格式的,
例如:"Bmp File(*.bmp;*.jpg;*.png)|*.bmp;*.jpg;*.png"。
OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Excel文档|*.xls;*.xlsx";
- FilterIndex:获取或设置文件对话框中当前选定筛选器的索引。同Filter相关联
- InitialDirectory:获取或设置文件对话框显示的初始目录。例:dia.InitialDirectory = @"F:\Desktop";
- Multiselect:获取或设置一个值,该值指示对话框是否允许选择多个文件。
3. OpenFileDialog 方法:
- ShowDialog:显示对话框,同时返回值,对应对话框中的按钮。
- DialogResult 枚举:
-
if (dia.ShowDialog() == DialogResult.OK) //单击OK触发
{
richTextBox1.LoadFile(dia.FileName); //将点击文件的内容加载进来
}
---------------------------------------------------------------------------------------------------------
╔════════╗
╠════╣ 第U6个 ╠══════════════════════════════════════════════════╣
╚════════╝
●·● SaveFileDialog 类:
1. 提示用户选择文件的保存位置。无法继承此类。
2. SaveFileDialog 属性:
- AddExtension:获取或设置一个值,该值指示如果用户省略扩展名,对话框是否自动在文件名中添加扩展名。
- DefaultExt:获取或设置默认文件扩展名。
- FileName:获取或设置一个包含在文件对话框中选定的文件名的字符串。【全路径】
- Filter:获取或设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。
- InitialDirectory:获取或设置文件对话框显示的初始目录。
- RestoreDirectory:获取或设置一个值,该值指示对话框在关闭前是否还原当前目录。
- Title:获取或设置文件对话框标题。
- FilterIndex:获取或设置文件对话框中当前选定筛选器的索引。
注意:第一个扩展名就是1,第二个扩展名就是2。
3. SaveFileDialog 方法:
- ShowDialog:
ColorDialog 类:
FontDialog 类:
---------------------------------------------------------------------------------------------------------
newToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.Z;