1、SerialPort 对象接收数据时是运行在辅助线程
从 SerialPort 对象接收数据时,将在辅助线程上引发 DataReceived 事件。由于此事件在辅助线程而非主线程上引发,因此尝试修改主线程中的一些元素(如 UI 元素)时会引发线程异常。如果有必要修改主 Form 或 Control 中的元素,必须使用 Invoke 回发更改请求,这将在正确的线程上执行。
2、c# sql在where查询语句中使用字符串变量与int型变量?
使用where语句访问数据库时where语句用上文中以及定义过的变量来查询。
只需要在sql语句的双引号内对变量进行操作,即
(“select * from 表名 where 字段名= ‘“+ 变量名+”’ ”)
需要注意的是:‘“+ 变量名+”’
要用两个单引号括住两个双引号
3、DataSet中取值
(1) DataSet.Table[0].Rows[ i ][ j ]
其中i 代表第 i 行数, j 代表第 j 列数
(2) DataSet.Table[0].Rows[ i ].ItemArray[ j ]
其中i 代表第 i 行数, j 代表第 j 列数
(3) DataSet.Tables[0].Columns.Count
取得表的总列数
(4) DataSet.Tables[0].Rows.Count
取得表的总行数
(5) DataSet.Tables[0].Columns[ i ].ToString()
取得表的 i 列名
注意:行和列的计算,都是从0开始
(1). 第一行第一列的值
DataSet ds=new DataSet();
ds.Tables[0].Rows[0][0].ToString();
(2).第一行对应列的字段名
ds.Tables[0].Rows[0]["字段名"].ToString();
dbset.tables(0).rows(0).item("第一列的列名")
(3). 行、列总数
DataSet_x.Tables[ "TableName "].Rows.Count
DataSet_y.Tables[ "TableName "].Columns.Count
(4). 取某一列的值
dataset.Tables["PersonInfo"].Rows[0]["age"].ToString();
(5).向DataSet中插入新的一列
DataSet ds = new DataSet();
ds.Table[0].Columns.Add("字段名","字段类型");
(6). 向DataSet中添加一行记录 dataset ds=new dataset();
DataRow dr = ds.Tables[0].NewRow();
dr["Finishdate"] = finishdate;
dr["Operator"] =Operator;
dr["disp"] =disp;
ds.Tables[0].Rows.Add(dr);
4、datagridview列宽设置
列宽手动调整
this.dataGridView2.Columns[0].Width = 70;
this.dataGridView2.Columns[1].Width = 110;
//列宽自动调整
dataGridView2.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
5、跨窗体调用文本框值示例:
子窗体页代码://定义子窗体名
public static gzl_input m_gzl;
public gzl_input()
{
InitializeComponent();
m_gzl = this;
}
子窗体textBox3文本框的Modifiers属性改为Public
主窗体调用文本框代码:
gzl_input.m_gzl.textBox3.Text
6、datagridview行高、列宽、字段行宽设置
this.dataGridView1.Columns[i].Width = 100;
this.dataGridView1.Rows[i].Height = 40;
dataGridView1.ColumnHeadersHeightSizeMode=DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
dataGridView1.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.True;
dataGridView1.ColumnHeadersHeight = 60;
7、SQL插入记录命令中使用某个字符串数组变量时出错
下面代码执行出错:
string intoscbh = GCS[0, 0];
textBox2.Text = intoscbh;
sql.ExecuteNonQuery1("insert into scjl(load_scbh)values('" + intoscbh + "')");
其中GCS[0, 0]中存储的是XYZ123456,在textBox2.Text中显示的也是XYZ123456,但执行SQL执令时却出错。
错误提示:字符串的语法错误 在查询表达式 ''XYZ123456' 中。
改成如下就可以正常:(GCS[0,0]增加字符串截取函数)
string intoscbh = GCS[0, 0].Substring(0, 9);
textBox2.Text = intoscbh;
sql.ExecuteNonQuery1("insert into scjl(load_scbh)values('" + intoscbh + "')");