笔记13 winform
一:panel 和 tablelayoutpanel,FlowLayoutPanel
FlowLayoutPanel和TableLayoutPanel是.NET Framework的新增控件。顾名思义,面板可以采用Web窗体的方式给Windows窗体布局。FlowLayoutPanel是一个容器,允许以垂直或水平的方式放置包含的控件。除了放置控件之外,还可以剪辑控件。放置的方向使用FlowDirection属性和FlowDirection枚举来设置。WrapContents属性确定在重新设置窗体的大小时,控件是放在下一行、下一列,还是剪辑控件。
TableLayoutPanel使用栅格结构控制控件的布局。所有的Windows窗体控件都是TableLayoutPanel的子控件,包括另一个TableLayoutPanel。所以窗口的布局可以非常灵活,并可以动态设置。把一个控件添加到TableLayoutPanel上时,会给属性页面的Layout类别添加4个属性Column、ColumnSpan、Row和RowSpan。与Web页面上的html表一样,可以给每个控件设置列和行间距。控件默认放置在表的单元格中心,但这可以使用Anchor和Dock属性改变。
二:操作鼠标对象Cursor
改变鼠标指针形状:
Cursor.Current = Cursors.WaitCursor;
try
{
.. do some work ..
}
finally
{
Cursor.Current = Cursors.Default;
}
三:OracleDataAdapter
DataReader工作时必须要维护数据库的连接,而且只能向前的方式读取数据,可以浏览记录或跳到某一记录上。而且只能读取记录。而用DataAdapter对象填充了DataSet,DataAdapter对象需要处理连接的打开和关闭。DataSet为数据的读写以及操作不同数据源中的数据提供了极大的灵活性。
表示用于填充 DataSet 和更新数据库的一组数据命令和到数据库的连接。无法继承此类。
OracleDataAdapter 作为 DataSet 和数据库之间的桥梁,用于检索和保存数据。OracleDataAdapter 这个桥梁通过这样的方法提供:使用 Fill 将数据从数据库加载到 DataSet 中,使用 Update 将在 DataSet 中所作的更改发送回数据源。
当 OracleDataAdapter 填充 DataSet 时,它为返回的数据创建必需的表和列(如果它们尚不存在)。但是,除非MissingSchemaAction 属性设置为 AddWithKey,否则这个隐式创建的架构中不包括主键信息。也可以使用FillSchema,让 OracleDataAdapter 创建 DataSet 的架构,并在用数据填充它之前就将主键信息包括进去。有关更多信息,请参见 向 DataSet 添加现有约束。
默认情况下,通过 Fill 导入 DataTable 的数字字段映射为 OracleNumber 对象。如果导入的非整数值过大或者精度高于 OracleNumber 的精度限制,则可能溢出 OracleNumber,并引发 Oracle 异常。有关更多信息,请参考OracleNumber 的说明。
四:c# using用法
using 关键字有两个主要用途:
(一).作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型。
(二).作为语句,用于定义一个范围,在此范围的末尾将释放对象。
using指令
①允许在命名空间中使用类型,这样,您就不必在该命名空间中限定某个类型的使用:
using System.Text;
using PC.Company;
②为命名空间或类型创建别名。
using MyCompany = PC.Company; //命名空间的别名。
using Project = PC.Company.Project; //类型的别名
using引入命名空间,并不等于编译器编译时加载该命名空间所在的程序集,程序集的加载决定于程序中对该程序集是否存在调用操作,如果代码中不存在任何调用操作则编译器将不会加载using引入命名空间所在程序集。因此,在源文件开头,引入多个命名空间,并非加载多个程序集,不会造成“过度引用”的弊端。
创建别名的另一个重要的原因在于同一文件中引入的不同命名空间中包括了相同名称的类型,如SharpMap.Geometries.Point与System.Drawing.Point。为了避免出现名称冲突,可以通过设定别名来解决:
using SGPoint = SharpMap.Geometries.Point;
using SDPoint = System.Drawing.Point;
尽管我们可以通过类型全名称来加以区分,但是这显然不是最佳的解决方案。用using指令创建别名,有效的解决了这种可能的命名冲突,才是最佳的解决方案。
using语句
using 语句允许程序员指定使用资源的对象应当何时释放资源。using 语句中使用的对象必须实现 IDisposable 接口。此接口提供了 Dispose 方法,该方法将释放此对象的资源。
①可以在 using 语句之中声明对象。
Font font2 = new Font("Arial", 10.0f);
using (font2)
{
// use font2
}
②可以在 using 语句之前声明对象。
using (Font font2 = new Font("Arial", 10.0f))
{
// use font2
}
③可以有多个对象与 using 语句一起使用,但是必须在 using 语句内部声明这些对象。
using (Font font3=new Font("Arial",10.0f), font4=new Font("Arial",10.0f))
{
// Use font3 and font4.
}
使用规则
①using只能用于实现了IDisposable接口的类型,禁止为不支持IDisposable接口的类型使用using语句,否则会出现编译错误;
②using语句适用于清理单个非托管资源的情况,而多个非托管对象的清理最好以try-finnaly来实现,因为嵌套的using语句可能存在隐藏的Bug。内层using块引发异常时,将不能释放外层using块的对象资源;
③using语句支持初始化多个变量,但前提是这些变量的类型必须相同,例如:
using(Pen p1 = new Pen(Brushes.Black), p2 = new Pen(Brushes.Blue))
{
//
}
④针对初始化对个不同类型的变量时,可以都声明为IDisposable类型,例如:
using (IDisposable font = new Font("Verdana", 12), pen = new Pen(Brushes.Black))
{
float size = (font as Font).Size;
Brush brush = (pen as Pen).Brush;
}
using实质
在程序编译阶段,编译器会自动将using语句生成为try-finally语句,并在finally块中调用对象的Dispose方法,来清理资源。所以,using语句等效于try-finally语句,例如:
Font f2 = new Font("Arial", 10, FontStyle.Bold);
try
{
//执行文本绘制操作
}
finally
{
if (f2 != null) ((IDisposable)f2).Dispose();
}
五:region
#region 块必须以 #endregion 指令终止。
#region 块不能与 #if 块重叠。但是,可以将 #region 块嵌套在 #if 块内,或将 #if 块嵌套在 #region 块内。
#region 使您可以在使用 Visual Studio 代码编辑器的大纲显示功能时指定可展开或折叠的代码块。
#region 是 ctrl + k,s
主方法一般不都是自动生成的嘛
笔记13 winform的更多相关文章
- 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...
- Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法
Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法 这篇笔记将介绍如何使用Ext.Net GridPanel 中使用Sorter. 默认情况下,Ext.Net GridP ...
- SQL反模式学习笔记13 使用索引
目标:优化性能 改善性能最好的技术就是在数据库中合理地使用索引. 索引也是数据结构,它能使数据库将指定列中的某个值快速定位在相应的行. 反模式:无规划的使用索引 1.不使用索引或索引不足 2.使用了 ...
- JAVA自学笔记13
JAVA自学笔记13 1.StringBuffer类 1)线程安全的可变字符序列 线程安全(即同步) 2)StringBuffer与String的区别:一个可变一个不可变 3)构造方法: ①publi ...
- golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换
golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...
- springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定
springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...
- 强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods)
强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods) 学习笔记: Reinforcement Learning: An Introduction, Richa ...
- Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...
- 并发编程学习笔记(13)----ConcurrentLinkedQueue(非阻塞队列)和BlockingQueue(阻塞队列)原理
· 在并发编程中,我们有时候会需要使用到线程安全的队列,而在Java中如果我们需要实现队列可以有两种方式,一种是阻塞式队列.另一种是非阻塞式的队列,阻塞式队列采用锁来实现,而非阻塞式队列则是采用cas ...
随机推荐
- poj1236 Tarjan算法模板 详解
思想: 做一遍DFS,用dfn[i]表示编号为i的节点在DFS过程中的访问序号(也可以叫做开始时间)用low[i]表示i节点DFS过程中i的下方节点所能到达的开始时间最早的节点的开始时间.初始时dfn ...
- 九度oj 题目1361:翻转单词顺序
题目描述: JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“stu ...
- 利用ajax实现数据传输
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与服 ...
- HashMap源码分析jdk1.6
HashMap数组每个元素的初始值为NULL 1.定义 public interface Map<K,V> { int size(); boolean isEmpty(); boolea ...
- centos中代理的设置
最近在校园网中使用一个centos的主机,链接网络是需要代理的,如果是windows主机在Internet选项里设置一下就可以,可是在linux这个任何配置都要更改配置文件的系统里我还真是纠结了好大一 ...
- 你能说出SQL聚集索引和非聚集索引的区别吗?
最近突然想起前一阵和一朋友的聊天,当时他问我的问题是一个非常普通的问题:说说SQL聚集索引和非聚集索引的区别. AD:WOT2015 互联网运维与开发者大会 热销抢票 其实对于非专业的数据库操作人员来 ...
- 理解 Glance
OpenStack 由 Glance 提供 Image 服务. 理解 Image 要理解 Image Service 先得搞清楚什么是 Image 以及为什么要用 Image? 在传统 IT 环境下, ...
- 标准C程序设计七---35
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- linux 时间模块 二
Linux中有硬件时钟与系统时钟 在Linux中有硬件时钟与系统时钟等两种时钟.硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟.系统时钟则是指kernel中的时钟.当Linux启 ...
- svn不是内部或外部命令?
svn不是内部或外部命令? 我的系统是Win7, [计算机]-->右键[属性]-->[高级系统设置]-->[环境变量]-->[系统变量 (S)]-->[Path]--&g ...