private void Form1_Load(object sender, EventArgs e) { CreateDataTable(); for (var i = 10; i < 15; i++) { var row = _dt.NewRow(); row["Customer"] = "80" + (i+1); row["Device"] = "Device" + (i+1).ToString("000"); row["Double"] = (double)i; row["Int"] = Math.Max(i, 12); _dt.Rows.Add(row); }
时间: 2024-02-14 19:31:15 浏览: 34
这是一个在窗体加载时自动调用的事件处理程序 "Form1_Load"。在该方法中,首先调用了 "CreateDataTable" 方法,用于创建数据表。然后使用一个 for 循环从 10 到 14,创建了五行数据,并将其添加到数据表 "_dt" 中。
每一行都通过 `_dt.NewRow()` 创建一个新的 DataRow 对象。然后为每个列赋值:
- "Customer" 列的值是以 "80" 开头加上 (i+1) 的值。
- "Device" 列的值是以 "Device" 开头加上 (i+1) 的值,并格式化为三位数的字符串。
- "Double" 列的值为 i 的浮点数形式。
- "Int" 列的值为 i 和 12 中的较大值。
最后,将每一行添加到 "_dt" 数据表中的行集合中。这样就完成了向数据表添加数据的操作。
如果您还有其他问题,可以随时提问!
相关问题
private void Form1_Load(object sender, EventArgs e) { var s = "123;;456;;789;;123;;456"; var s1 = s.Substring(3); s1 = s.Substring(3, 2); //字串分割:以 sSymbol 符号分割 var sSymbol = ";;"; var parts = s.Split(new[] { sSymbol }, StringSplitOptions.RemoveEmptyEntries); var sTemp = ""; for (var i = 0; i < parts.Length; i++) { sTemp += parts[i] + ","; } parts = s.Split(new[] { "," }, StringSplitOptions.None); var sDistinct = ";";
这段代码是一个 Windows 窗体应用程序的加载事件处理器。在加载事件中,首先定义了一个字符串变量 s,其值为"123;;456;;789;;123;;456"。然后使用 Substring 方法截取了字符串 s 的子串,s1 的值为"3;;456;;789;;123;;456",再通过 Substring 方法截取了 s1 的子串,s1 的值变为"3;"。
接下来是字符串分割的部分,使用 Split 方法将字符串 s 按照指定的分隔符 ";;" 进行分割,得到一个字符串数组 parts。然后使用一个循环将 parts 数组中的元素拼接为一个新的字符串 sTemp,并在每个元素之间添加逗号。
接下来又使用 Split 方法将字符串 s 按照逗号进行分割,得到一个新的字符串数组 parts。最后定义了一个字符串变量 sDistinct,其值为分号";"。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace serialConn { public delegate void NewsDelegate(byte[] time);//跨窗体调用第一步,委托 public partial class Form1 : Form { private delegate void SafeCall(string text);//声明委托 public static NewsDelegate news;//跨窗体委托的实例化(第三步1) public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { for (int i = 1; i < 10; i++) { CmbSerialNum.Items.Add("COM" + i.ToString()); } CmbBuad.Items.Add("2400"); CmbBuad.Items.Add("4800"); CmbBuad.Items.Add("9600"); CmbBuad.Items.Add("19200"); CmbBuad.Items.Add("115200"); news = News;//跨窗体调用(第三步2) } private void BtnOpen_Click(object sender, EventArgs e) { if (CmbBuad.Text == "" || CmbSerialNum.Text == "") { MessageBox.Show("请选择串口号和波特率"); } try { serialPort1.Open(); BtnOpen.Enabled = false; BtnClose.Enabled = true; } catch { MessageBox.Show("串口打开错误,请进一步检查"); } } private void BtnClose_Click(object sender, EventArgs e) { try { serialPort1.Close(); BtnClose.Enabled = false; BtnOpen.Enabled = true; } catch { MessageBox.Show("无法关闭串口"); } } private void CmbSerialNum_SelectedValueChanged(object sender, EventArgs e) { serialPort1.PortName = CmbSerialNum.Text.ToString(); } private void CmbBuad_SelectedValueChang
ed(object sender, EventArgs e)
{
serialPort1.BaudRate = Convert.ToInt32(CmbBuad.Text);
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
int len = serialPort1.BytesToRead;//获取接收缓冲区中的字节数
byte[] data = new byte[len];//声明一个字节数组存储要读取的数据
serialPort1.Read(data, 0, len);//将数据读取到字节数组中
string str = Encoding.Default.GetString(data);//将字节数组转换为字符串
DisplayData(str);//将数据显示到文本框中
news(data);//跨窗体调用(第四步)
}
private void DisplayData(string data)
{
if (TxtData.InvokeRequired)
{
var d = new SafeCall(DisplayData);
TxtData.Invoke(d, new object[] { data });//跨线程访问控件(第二步)
}
else
{
TxtData.AppendText(data);
}
}
private void BtnSend_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
byte[] buffer = Encoding.Default.GetBytes(TxtSend.Text);//将文本框中的字符串转换为字节数组
serialPort1.Write(buffer, 0, buffer.Length);//向串口发送数据
TxtSend.Clear();//清空文本框
}
else
{
MessageBox.Show("请先打开串口");
}
}
}
}
这是一个串口通信的C#代码,请问你对这段代码有什么看法?
阅读全文