C#WinForm代码实现tableLayoutPanel 控件表格的保存,查看和删除
时间: 2024-02-18 19:59:35 浏览: 109
以C#开发用的表格控件
3星 · 编辑精心推荐
以下是C#WinForm代码实现tableLayoutPanel控件表格的保存、查看和删除的示例代码:
1. 保存表格数据
```csharp
private void btnSave_Click(object sender, EventArgs e)
{
// 获取tableLayoutPanel中的控件数量
int count = tableLayoutPanel1.Controls.Count;
// 创建一个用于保存表格数据的List
List<string> data = new List<string>();
// 遍历tableLayoutPanel中的所有控件,将其内容添加到List中
for (int i = 0; i < count; i++)
{
Control control = tableLayoutPanel1.Controls[i];
if (control is TextBox)
{
data.Add((control as TextBox).Text);
}
else if (control is ComboBox)
{
data.Add((control as ComboBox).SelectedItem.ToString());
}
// 其他控件类型的处理方式可以根据具体情况来确定
}
// 将List中的数据保存为XML文件
XmlSerializer serializer = new XmlSerializer(typeof(List<string>));
using (FileStream fs = new FileStream("data.xml", FileMode.Create))
{
serializer.Serialize(fs, data);
}
}
```
2. 双击查看表格数据
```csharp
private void tableLayoutPanel1_CellDoubleClick(object sender, TableLayoutCellEventArgs e)
{
// 获取所选单元格的行和列
int row = e.Row;
int col = e.Column;
// 加载保存表格数据的XML文件
XmlSerializer serializer = new XmlSerializer(typeof(List<string>));
List<string> data = new List<string>();
using (FileStream fs = new FileStream("data.xml", FileMode.Open))
{
data = (List<string>)serializer.Deserialize(fs);
}
// 根据行和列获取对应的数据
int index = row * tableLayoutPanel1.ColumnCount + col;
string cellData = data[index];
// 在新窗口中显示所选单元格的数据
Form2 form2 = new Form2(cellData);
form2.Show();
}
```
3. 删除表格数据
```csharp
private void btnDelete_Click(object sender, EventArgs e)
{
// 获取选中的单元格
Control selectedControl = tableLayoutPanel1.GetControlFromPosition(tableLayoutPanel1.ColumnCount - 1, tableLayoutPanel1.RowCount - 1);
if (selectedControl == null)
{
MessageBox.Show("请先选择要删除的单元格!");
return;
}
// 获取选中单元格的行和列
int row = tableLayoutPanel1.GetRow(selectedControl);
int col = tableLayoutPanel1.GetColumn(selectedControl);
// 加载保存表格数据的XML文件
XmlSerializer serializer = new XmlSerializer(typeof(List<string>));
List<string> data = new List<string>();
using (FileStream fs = new FileStream("data.xml", FileMode.Open))
{
data = (List<string>)serializer.Deserialize(fs);
}
// 根据行和列获取对应的数据
int index = row * tableLayoutPanel1.ColumnCount + col;
string cellData = data[index];
// 确认是否删除数据
DialogResult result = MessageBox.Show("确定要删除该数据吗?", "确认", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
// 从List中删除数据
data.RemoveAt(index);
// 将修改后的List保存为XML文件
using (FileStream fs = new FileStream("data.xml", FileMode.Create))
{
serializer.Serialize(fs, data);
}
// 从tableLayoutPanel中删除控件
tableLayoutPanel1.Controls.Remove(selectedControl);
}
}
```
以上是C#WinForm代码实现tableLayoutPanel控件表格的保存、查看和删除的示例代码,具体实现方式可以根据自己的需求来确定。
阅读全文