窗体:
1.怎么修改标题
text属性
2.怎么修改图标
窗口样式->icon可以修改
3.窗体出现的位置
startPositon
4.固定窗体的大小
AutoSizeMode设置为GrowAndShrink
5.是否有最大化最小话
MaximizeBox MinimizeBox设置为false
任何控件都有一个基本属性叫name
load就是窗体第一次被初始化
按钮
基本特性:
鼠标滑过(按钮获取焦点)时,按钮的背景发生改变(浅蓝色)[原始状态为灰色]
鼠标“左键按下”北京颜色改变为深蓝色,鼠标弹起,变为浅蓝色
MouseClick与Click
共同点:都会接受鼠标左键单击事件,并且具有共同信息(鼠标单击的位置(x/y),鼠标摁下的键,按下次数)
不同点:MouseClick会接受鼠标其他按键,click不会.[其他按键:左键/中键/其他]
(button比较特殊,仅接受鼠标左键)
MouseHover:鼠标悬停触发(停留一定事件)
MourseLeave:鼠标离开(离开的范围时控件大小)
MourseMove:鼠标滑过(从控件的内部滑动任意位置,)
Enter:变成焦点时触发()
Leave:失去焦点触发(对于按钮,则按下其他按钮才会时)
文本框:TextBox让文本允许多行,Mutiline属性设置为true
让文本右侧出现滚动模块:设置ScrollBars属性为Both即可 (Vertital仅显示垂直滑块,Both则还会显示横向滑块)
只有设置Dock属性后才会出现横向滑块
将文本框内容显示为号,设置PasswordChar属性为即可
密码类型的文本框不允许复制其中内容
Enable 和readOnly的区别
1.readOnly允许复制内容.enable不允许
2.vs中readOnly可以直观的看见变成了灰色。enable只能运行后才可以看见
TextChanged事件获取的时文本框内所有内容,并非每次按键触发的单独内容
AppendText方法:追加文本,在末尾追加新的数据
TextLength 当前文本内容的长度(个数)
下拉列表:ComboBox
text属性的数据为控件显示的内容
SelectedItem是获取当前选择的对象
dropDownStyle设置为simple则是没有下拉按钮
当前dropDownStyle为DropDown时,可以更改下拉框的内容,将会引发使用selectItem的null异常
为避免用户修改,一般设置为DropDownList
做一个联动的逻辑
首先获取cmb1选择的数据
再加载cmb2选择的项目
复选框(Checkbox)
Checked属性,标记当前复选框状态(选中时为True否则False)
ThreeState 会提供三种选中状态
根据CheckState来判断(Checked[选中] , Unchecked[没选中] , Indeterminate[树结构时,会出现的一种状态,表示当前树结构下有一个或多个子项(并不是所有子项)被选中])
CheckedChanged 事件:指示当前控件是否被选中
思路步骤:
1.需要在窗体加载完成时获取所有的checkbox.
1.使用name(如果控件很多时,这就是一个噩梦般的方法)
2.使用this.Controls获取所有的CheckBox
2.对这些checkbox完成事件的赋值.
单选框(RadioButton)笔记
希望使用单独功能时,才选择这个控件,如果希望多个功能请使用CheckedBox
Checked 属性:True被选中否则False.
RadioButton 有区域特性,需要使用其他控件进行分隔.
如果不去添加区域(GroupBox)时,它针对真个窗体为一个区域
GroupBox
使用GpBox时内部的控件不会根据Gp的大小改变而改变(如果缩小GP,那么内部控件将被遮挡);
作用1: 当做RadioButton的选项区域
作用2: 划分控件区域
作用3: 美化
Dock 属性. 作为基本布局.
可以让控件完全贴靠某一个方向(上下左右),或者铺满整个容器
置于底层与置于顶层的作用.
标签(Label)
大部分时候的作用就是当做显示/提示
一些需要使用链接时,使用标签替代
linkLabel 与Label 是一样的功能,提供显示或者提示的功能.
区别: LinkLable有点击时/点击后的视觉特效
实现一个简单的登录 思路
给登录按钮绑定一个Click事件
登录过程:
1.获取用户名,获取密码
2.比对用户名密码
3.对登录结果进行显示(labres.Text = 登录结果)
列表框(ListBox)
SelectionMode = SelectionMode.MultiExtended; 多选(可以使用Shift/Ctrl/鼠标拖选)
山寨思路
选择项目山寨
设置SelectionMode为One(单选)
添加选中事件
图片框(PictureBox)
设置Image 属性来完成对图片框的图像进行初始化
SizeMode会调整当前图像显示的方式
Normal 不做任何效果(只会显示出图片框大小范围内的图片信息)
StretchImage 铺满整个图片控件(加载验证码时一般会使用这个模式)
AutoSize 自动控制大小(控件的大小会随着图片的大小而变化)[Dock属性是不会被齐影响]
CenterImage 仅在图片中间居中,显示大小跟随控件大小
Zoom 缩放图片,居中显示
实现读取本地文件思路
读取图片
先获取文件路径
将这个图片读取成Image对象
pic.Image = Image对象.
OpenFileDialog 打开文件对话框
Filter 属性 设置文件筛选(图片文件|.jpg|所有文件|.*)
DefaultExt 默认后缀名
FileName 获取当前选中的文件
FileNames 获取多个选中的文件
//一定要添加对ok的判断
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
//在这里才是获取到有效路径.
txtPath.Text= openFileDialog1.FileName;
}
FolderBrowserDialog 文件夹浏览对话框
SelectedPath 是选择后的目录绝对路径
RootFolder = Environment.SpecialFolder.Cookies; (默认桌面)不推荐大家修改默认目录,因为有些计算机不是用管理员身份启动,那么他们没有办法访问C盘中的特殊文件夹
string Path = Application.StartupPath; 不会增加/需要手动添加
string cPath = AppDomain.CurrentDomain.BaseDirectory; 会在目录后增加/
课外知识 抽象类
abstract 抽象标示符
只要是抽象类,类的本身都会具有创建这个抽象类的方法
typeof 获取某个对象的类型
string[] s = Enum.GetNames(typeof(PictureBoxSizeMode)); 获取枚举中的所有Name(也就是显示的文字)
//根据Name 来得到相应的枚举类型.
Enum.Parse(typeof(PictureBoxSizeMode), name); 返回typeof 中对应的枚举类型
直接根据值进行强制类型转换
先决条件 枚举类型的数据必须是连续性的,而且index也是连续性的 并且index与枚举的值是连续的
int index= cmb1.SelectedIndex; //获取当前选择的index
//将index转换为枚举对象
PictureBoxSizeMode ps = (PictureBoxSizeMode)index;
向下托选选择:按住键盘的ALT键
日期时间控件(DateTimePicker) 控件会根据你本地的设置而设置
ShowUpDown 开启时,没有下拉选择,只能通过键盘的上下键来调整数值,或者使用UPDown控件调整
Format
Long 长时间类型 (年月日)
Short短时间类型 (2017/6/9)
Time 只显示时间 (17:27:20 PM) 仅显示时间
Custom 自定义时间格式
CustomFormat属性定义自定义显示格式 (yyyy-MM-dd HH:mm:ss 常规格式)[yyyy 年 MM 月份 dd 日期 HH 24小时制: mm 分钟 ss 秒]
Value 属性获取的是本地显示的时间格式. value获取的是时间类型 Datetime;
如果想获取自定义格式的样式时间,那么应该使用Text属性.获取到的是一个文本字符串
进度条(ProgressBar)
两个基本属性
MaxNum(最大值),MinNum(最小值)
Value(当前数值),
Step(增量值) : 每次增长多少
progressBar1.PerformStep(); 按照Step设置的大小移动
如果需要做的数据规模较大,不希望每次按照固定数量增长,那么我们可以直接设置value 值来打到目的
使用场景:
载入资源时
分步骤:
1. 读取本地资源.
2. 读取基本数据.
3. 同步服务器资源.
更新文件:
读取文件
多个进度条更新思路(
第一个进度条 p1 最大值100,
每次增长10.
p2, 最大值 100,
每次增长10;
)
1.让p1增长;(for p1.maxnum)
2. p1.value == p1.maxnum , 执行p2的增长;
for (int i=0;i<=p2.maxvalue;i++)
{
for(int j= 0;j<=p1.maxvalue;j++)
{
p1.value = j;
}
p2.value = i;
}
树控件(TreeView)
层级/分类 展示型控件
Nodes 作为所有子项(子节点)的集合
HotTracking 提供鼠标效果(移动至节点后,节点名称会以下划线形式展示)
列表控件(ListView)
列表展示(表格)
View 显示模式
Details(详细模式)
FullRowSelect 让一行被选中
GridLines 是否显示网格线
项:
第一个ListViewItem 它的Text 显示在第一列
它的子项,显示在后面的列
每一个ListViewItem 为一行.Item中的子项(SubItem) 对应剩余的列
当ListViewItem的SubItem超出列数,则不会被显示出来
列:
第一列的文本显示只能在左边(其余列是可以的).
删除时不要以index作为删除依据,因为在删除时会发生index的重新排序.
容器(Panel面板)(SplitContainer分隔容器)(TabControl 选项卡控件)
Panel面板
作用: 作为一个控件集合
一个美化的SplitContainer
首先添加 标签
隐藏这个标签
折叠panel1时显示