没有合适的资源?快使用搜索试试~ 我知道了~
Winform开发自主手册笔记
需积分: 9 1 下载量 58 浏览量
2022-09-30
12:48:00
上传
评论
收藏 402KB DOC 举报
温馨提示
试读
27页
Winform开发自主手册笔记
资源推荐
资源详情
资源评论
1. C#命名规范
Pascal 规则 每个单词开头的字母大写(如 TestCounter).
Camel 规则 除了第一个单词外的其他单词的开头字母大写. 如. testCounter.
Upper 规则 仅用于一两个字符长的常量的缩写命名,超过三个字符长度应该应用 Pascal 规则.
类命名指导
- 类名应该为名词及名词短语,尽可能使用完整的词.
- 使用 Pascal 规则
- 不要使用类前缀 - 不要使用下划线字符 (_)。
- 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例
如,类名称 IdentityStore 就是适当的。
- 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为
Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button
对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。
接口命名规则
- 接口名称应该为名词及名词短语或者描述其行为的形容词,尽可能使用完整的词. (Example IComponent or IEnumberable)
- 使用 Pascal 规则
- 使用字符 I 为前缀,并紧跟一个大写字母(即接口名的第一个字母大写)
枚举命名规则
- 对于 Enum 类型和值名称使用 Pascal 大小写。
- 少用缩写。
- 不要在 Enum 类型名称上使用 Enum 后缀。
- 对大多数 Enum 类型使用单数名称,但是对作为位域的 Enum 类型使用复数名称。
- 总是将 FlagsAttribute 添加到位域 Enum 类型。
变量命名
- 在简单的循环语句中计数器变量使用 i, j, k, l, m, n
- 使用 Camel 命名规则
方法命名
- 使用 Pascal 规则
- 对方法名采用一致的动词/宾语或宾语/动词顺序。例如,将动词置于前面时,所使用的名称诸如 InsertWidget 和 InsertSprocket;将宾
语置于前面时,所使用的名称诸如 WidgetInsert 和 SprocketInsert。
- 推荐名称应该为动词或动词短语.例如 Save,SaveCustomer,而不要使用 CustomerSave
- 不要在方法中重复类的名称。例如,如果某个类已命名为 Book,则不要将某个方法称为 Book.CloseBook,而可以将方法命名为
Book.Close。
属性命名
- 名称应该为名词及名词短语
- 使用 Pascal 规则
- 对于 bool 型属性或者变量使用 Is(is)作为前缀,不要使用 Flag 后缀,例如应该使用 IsDeleted,而不要使用 DeleteFlag
集合命名
- 名称应该为名词及名词短语
- 使用 Pascal 规则
- 名称后面追加“Collection”
事件命名
- event handlers 命名使用 EventHandler 后缀.
- 两个参数分别使用 sender 及 e
- 使用 Pascal 规则
- 事件参数使用 EventArgs 后缀
- 事件命名使用语法时态反映其激发的状态,例如 Changed,Changing.
- 考虑使用动词命名. 变量命名
- 在简单的循环语句中计数器变量使用 i, j, k, l, m, n
- 使用 Camel 命名规则
- 自定义的属性以 Attribute 结尾 自定义的异常以 Exception 结尾
其它常用的编码规则
代码的缩进。要用 Tab,而不要用 space.
局部变量的名称要有意义。不要用 x,y,z 等等(除用于 For 循环变量中可使用 i,j,k,l,m,n)。
所有的成员变量声明在类的顶端,用一个换行把它和方法分开。
用有意义的名字命名 namespace,如:产品名、公司名。
始终使用"{ }"包含 if 下的语句,即使只有一条语句。
把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用#region…#endregion。
2. C#循环输入字符串(空格为错误字符时):
var next = Console.ReadLine();
while (!string.IsNullOrWhiteSpace(next))
{
next = Console.ReadLine();
//下一次循环输入,结果接上一次输出
}
3. C#对用户密码进行加密解密
CSDN https://blog.csdn.net/u011555996/article/details/107051146/
4. panel 容器中打开子窗体
父窗体中按钮的代码
遍历 ComboBox
方法一:
for (int i = 0; i < comboBox1.Items.Count; i++)
{
MessageBox.Show(comboBox1.GetItemText(comboBox1.Items[i]));
}
方法二:
foreach (System.Data.DataRowView dr in comboBox1.Items)
{
string id = dr["student_id"].ToString();
string nane = dr["student_name"].ToString();
}
//for (int i = 0; i < comboBox1.Items.Count; i++)
//{
// DataRowView dr = (DataRowView)comboBox1.Items[i];
// string id = dr["student_id"].ToString();
// string nane = dr["student_name"].ToString();
//}
方法三:
for (int i = 0; i < comboBox1.Items.Count; i++)
{
comboBox1.SelectedIndex = i;
string value = comboBox1.SelectedValue.ToString();
}
5. 委托事件代码实例
待传递参数的窗口 form3 中定义:
//定义一个向父窗体传递参数的委托类型
public delegate void SendMessageToForm2(string s);
//实例化一个此委托类型的事件
public event SendMessageToForm2 smtf_event;
//在本窗体的行为方法中执行,并传递出参数 message
smtf_event(message);
//之后在具体执行的窗体中定义方法
接受参数的窗口 form2 中定义:
form3.smtf_event += new Form3.SendMessageToForm2(ToShowGetMessage);
//定义具体执行的方法,form2 中 tabpage1 获得参数,一个用户信息字符串
public void ToShowGetMessage(string s)
{
richTextBox1.Text = s;
}
6. DataGridView 这个控件可以将数据以表格的形式显示出来。数据可以是非绑定模式和绑定模式两种。
非绑定模式,故名思议非绑定模式就是该表格显示的内容不是绑定的数据源,而是通过代码手动将数据
添加到控件中的。
绑定模式是指将控件关联到数据源(DataSet),根据数据库的列自动生成列,并自动进行数据的填充。
DataGridView1.DataSource= ds
DataGridView1.DataMember= dt.TableName
其中的 ds 为我们要关联数据源,dt 为数据源中的一个表。
7. DataGridView 控件显示数据库中的数据:
private void AllSearch_Load(object sender, EventArgs e)
{
MySqlConnection conn;
string constr = "server=localhost;database=数据库名;uid=账号;pwd=密码;";
conn = new MySqlConnection(constr);
conn.Open();
MySqlCommand co = new MySqlCommand("select * from 表名;", conn);
MySqlDataAdapter adapt = new MySqlDataAdapter();
adapt.SelectCommand = co;
DataSet ds = new DataSet();
adapt.Fill(ds, "t"); //第二个参数:表名,随便取
dataGridView1.DataSource = ds.Tables["t"];
conn.Close();
}
8. Socket 套接字网络编程
(一)数据传输方式
常用 stream 和 dgram
1. STREAM
表示面向连接的数据传输方式,数据可以准确无误地到达另一台计算机,如果丢失或损坏,可以重新发送,但是相对效率低
2.DGRAM
表示无连接的数据传输方式,计算机只管数据传输,不做数据校验,DGRAM 所做的校验工作少,所以效率比 STREAM 高
例如:QQ 视频聊天和语音聊天使用的就是 DGRAM 传输数据,因为首先需要保证通信的效率,尽量减少延迟,而数据的正确性是次
要的,即使丢失很小的一部分数据视频和音频也可以正常解析,最多出现噪点或杂音,不会对通信质量有实质影响
(原文链接:https://blog.csdn.net/dust__/article/details/105154745)
客户端与服务端程序编写流程
(二)服务器端编写步骤
1. 调用 socket()函数创建一个用于通信的套接字
买了个手机
2. 给已经创建的套接字绑定一个端口号,一般通过设置网络套接口地址和调用 bind()函数来实现
办张手机卡,插上手机卡
3. 调用 listen()函数使套接字成为一个监听套接字
等待来电
4. 调用 accept()函数来接受客户端的连接,这时就可以和客户端通信
接听到了打来的电话
5. 处理客户端的连接请求
接通电话听、说沟通
6. 终止连接
挂断电话
(三)客户端编写步骤
1. 调用 socket()函数创建一个用于通信的套接字
买了个手机
2. 通过设置套接字地址结构,说明客户端与之通信的服务器的 IP 地址和端口号
输入对方手机号
3. 调用 Connect()函数来建立与服务器的连接
拨号,并等接听
4. 调用读写函数发送或接收数据
说话、听话
剩余26页未读,继续阅读
资源评论
zrpstc
- 粉丝: 5
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功