1、基础格式化
(1)把int i 转化为 十六进制然后转化为字符型。添加到下拉框中
for (int i = 0; i < 256; i++)
{
string Xnum = i.ToString("x").ToUpper();
// 把i转化为16进制,然后转化为字符
// 为了实现对齐,把一位的十六进制数,前加0
if (Xnum.Length == 1)
Xnum = "0" + Xnum;
// 十六进制数前统一加上0x.
Xnum = "0x" + Xnum;
//Console.WriteLine(Xnum);
comboBox1.Items.Add(Xnum); // 添加到下拉框中。
}
(2)格式化控制输出 string.Format()
string.Format("frameType: {0,-10}", g_ImageData.frameType.ToString()) 字符串按照占 10位,不够10位后面的用空格补齐,输出,靠左对齐
(3) 强制转化问题 Convert.ToInt32() 强制转化为Int32 类型。
int EPPL1_H = Convert.ToInt32(textBox_EPPl1_HDRLAY.Text); // 从文本框中的获取内容,强制转化为Int32,若转化不成功,就返回0。
(4)int.Parse(string);
int.Parse(string 变量名)
该方式是将数字内容的字符串转换为int类型
1.如果字符串的内容为Null ,则抛出ArgumentNullException异常;
2.如果字符串内容不是数字,则抛出FormatException异常;
3.使用该方法只能处理字符串的内容,而且转换后的字符串内容要在int类型的可表示范围之内,若超出,则抛出OverflowException异常。
2、点击按钮后,执行简单串口的方法
private void button1_Click(object sender, EventArgs e)
{
string Data = comboBox1.Text; // 获取下拉框的内容
String Snum = Data.Substring(2, 2);
byte[] buffer = new byte[1];
buffer[0] = Convert.ToByte(Snum, 16); // 声明当前字符串为16进制,把字符串强制转化为byte类型。
try // 防止出错
{
serialPort1.Open(); // 串口的一些使用方法
serialPort1.Write(buffer, 0, 1);
serialPort1.Close();
}
catch // 出错了就只执行下面代码
{
if(serialPort1.IsOpen)
serialPort1.Close();
MessageBox.Show("端口错误","端口"); // 蹦出一个提示框
}
}
3、listView 控件 列表控件
请看
this.listViewSelectRobot.CheckBoxes = false; //设置控件中各项的旁边是否显示复选框
this.listViewSelectRobot.Columns.Add("serial", 55, HorizontalAlignment.Left);
this.listViewSelectRobot.Columns.Add("robotID", 60, HorizontalAlignment.Left);
this.listViewSelectRobot.Columns.Add("abn_total", 60, HorizontalAlignment.Left);
this.listViewSelectRobot.Columns.Add("abn_Index", 60, HorizontalAlignment.Left);
this.listViewSelectRobot.Columns.Add("abn_type", 90, HorizontalAlignment.Left);
this.listViewSelectRobot.Columns.Add("abn_cnt", 60, HorizontalAlignment.Left);
this.listViewSelectRobot.Columns.Add("coordinate_x", 90, HorizontalAlignment.Left);
this.listViewSelectRobot.Columns.Add("coordinate_y", 90, HorizontalAlignment.Left);
this.listViewSelectRobot.Columns.Add("orient", 60, HorizontalAlignment.Left);
this.listViewSelectRobot.Columns.Add("robotTime", 120, HorizontalAlignment.Left);
// 确定控件有几列,第一列标题为"serial",属性为 宽度为55,对齐方式为HorizontalAlignment.Left向左对齐
this.listViewSelectRobot.View = System.Windows.Forms.View.Details;
// 设置View属性 如果不写这句,那么加的列压根显示不出来。必须写tRobot.GridLines = true;
this.listViewSelectRobot.LabelEdit = true;
// 允许用户编辑书签
this.listViewSelectRobot.AllowColumnReorder = true;
// 是否拖动列表头来改变列的顺序
this.listViewSelectRobot.Sorting = SortOrder.Ascending;
// 对列表视图的项进行排序 Ascending递增排序 Descending 递减排序 None项未排序。
for (int i = 0; i < cMaxSumPlace; i++) // cMaxSumPlace 5000 表示5000行
{
this.listViewSelectRobot.Items.Add("");
this.listViewSelectRobot.Items[i].SubItems.Add("");
this.listViewSelectRobot.Items[i].SubItems.Add("");
this.listViewSelectRobot.Items[i].SubItems.Add("");
this.listViewSelectRobot.Items[i].SubItems.Add("");
this.listViewSelectRobot.Items[i].SubItems.Add("");
this.listViewSelectRobot.Items[i].SubItems.Add("");
this.listViewSelectRobot.Items[i].SubItems.Add("");
this.listViewSelectRobot.Items[i].SubItems.Add("");
this.listViewSelectRobot.Items[i].SubItems.Add("");
this.listViewSelectRobot.Items[i].SubItems.Add("");
}
/*
* this.listView1.Items.Add("A1");
这是指给这个控件表添加一个新的行,同时把新行的第一列数据设为A1,此时这个新行内的元素集合就是this.listView1.Item[0]
this.listView1.Items[0].SubItems.Add("A2");
这是给刚添加的第一行,也就是this.listView1.Item[0]添加第二列数据A2.如果说Items在行的层次增加,Item[i].SubItems才真正对应单元格操作。
this.listView1.Items[0].SubItems.Add("A3");
* 新加一行的信息 A1 -- A2 --A3
*/
this.listViewDispPose.CheckBoxes = false;
this.listViewDispPose.Columns.Add("serial", 60, HorizontalAlignment.Left);
this.listViewDispPose.Columns.Add("coordinate_x", 80, HorizontalAlignment.Left);
this.listViewDispPose.Columns.Add("coordinate_y", 98, HorizontalAlignment.Left);
this.listViewDispPose.Columns.Add("totalCnt", 60, HorizontalAlignment.Left);
this.listViewDispPose.View = System.Windows.Forms.View.Details;
this.listViewDispPose.FullRowSelect = true; // 选中一行
this.listViewDispPose.GridLines = true; // 显示网格
this.listViewDispPose.LabelEdit = true;
this.listViewDispPose.AllowColumnReorder = true; // 是否拖动列表头来改变列的顺序
this.listViewDispPose.Sorting = SortOrder.Ascending; // 排序
4、常用的窗体
RxDataDispose_Serial 串口
textBoxworkMode 工作模式文本框
button 按钮,label 标签字体 comboBox1下拉框 progressBar1 进度条 MessageBox.Show(“时间到了“,”提示”); 弹出提示框 “提示”是标题,“时间到了”是内容
timer1 是定时器。
用Panel容器控件把 RadioButton(单选框控件) 框住,就是说明在框中的单选框就是一类的。
Textbox1 文本框 可以设置横向滑动条或竖向滑动条。
复选框 (CheckBox) 多选框,
ovalShape 画圆 ovalShape.FillColor
Button.Enable = false; 表示当前按钮按下,不能在按。
time.Interval = 1000; 时间间隔为1s;
5、form窗体一些常用属性
(1)让窗体居中显示
(2)
6、 using (FileStream fileStream = File.OpenWrite(filePath)) ,c#中为什么要用using呢?
using的意思是变量在出了using作用域后将自动调用它的Dispose方法,也就是释放资源,一般来说,文件流都要主动释放资源的,因为读写文件是会加锁的,不释放的话,别的程序就无法使用文件了
也可以不用using,在用完后显式的调用下fs.Dispose()就好了,另外using的对象必须是实现IDisposable接口的
一、两种运用方式:
1.引入命名空间的类库方法,或者命名空间别名;
允许在命名空间中使用类型,这样就不必在该命名空间中限定某个类型的使用: 复制代码 using System.Text;
为命名空间或类型创建别名。这称为“using 别名指令”。 复制代码 using Project = PC.MyCompany.Project;
2.资源释放的作用范围:跳出using作用的范围后就会被释放。
如果一个类实现了接口IDisposable(这个接口只有一个方法void Dispose()),当这个类在using中创建的时候,using代码块结束时会自动调用这个类中实现了接口IDisposable的Dispose()方法;
using有两个主要用途:作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型。作为语句,用于定义一个范围,在此范围的末尾将释放对象。
7、listBox 控件 列表框
(1) 设置横向水平条 这个属性选择true
(2)
8 label 控件
(1)确认可见边框
(2)若想改变label控件大小 必须要把AutoSize属性改为false
(3)name 就是 label 控件的名字 text 为 label控件要显示的内容
(4)
9 tabControl 选项卡
(1) MaxMode = tabControl.SelectedIndex; 获取选择项的下标。
(2)
10 comboBox 下拉框
(1) workModeSet = comboBox.SelectedIndex; 获取当前下拉框的下标 若0,1,2.. 第0项...。
(2)comboBox.Items.Add("意外移动"); 下拉框中添加 ''意外移动" 这一项。
11 textbox 文本框
(1)把Multiline(多行),把多行属性选择为true 就可以竖向拉伸了
(2)