winform做一个页面,可以查询数据导回到datagrid,现在想在最后一列做一个按钮,如果返回的这行数据有a字段数据则显示,并且点击可以打开b窗口并将a数据传过去,请写出代码
时间: 2024-09-10 22:30:23 浏览: 45
C# 实现dataGridView选中一行右键出现菜单的示例代码
5星 · 资源好评率100%
在WinForm中,你可以使用DataGridView控件来显示数据,并在每一行的最后添加一个Button控件。这里是一个简单的示例,假设你已经有了一个DataTable或DataSet来存储查询结果,我们将在DataGridView的模板列中动态创建这个按钮:
```csharp
// 首先,在窗体加载时设置 DataGridView 的数据源
private void Form_Load(object sender, EventArgs e)
{
// 假设你有一个 DataTable 或 DataSet 叫做 data
dataGridView1.DataSource = data;
// 设置最后一列的数据模板
DataGridViewCellStyle cellStyle = new DataGridViewCellStyle();
cellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; // 右对齐
// 添加一个新的模板列(包含一个Button)
DataGridViewColumn buttonColumn = new DataGridViewTextBoxColumn();
buttonColumn.HeaderText = "操作";
buttonColumn.DefaultCellStyle = cellStyle;
dataGridView1.Columns.Add(buttonColumn);
// 实现按钮的 Click 事件处理
dataGridView1.CellClick += DataGridView_CellClickHandler;
}
// 这里是 CellClick 事件处理器
private void DataGridView_CellClickHandler(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == dataGridView1.Columns.Count - 1) // 判断是否点击了最后一列
{
string aData = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString(); // 假设第一列是 A 字段
// 检查是否有值
if (!string.IsNullOrEmpty(aData))
{
Button btn = (Button)dataGridView1.CurrentCell.OwningRow.Cells[dataGridView1.Columns.Count - 1].Controls[0];
OpenWindow(aData, btn); // 打开新窗口并传递数据
}
}
}
// 创建一个方法来打开新窗口并传递数据
private void OpenWindow(stringaData, Button btn)
{
// 假设 openNewWindow 是一个方法,接收字符串参数并显示在B窗口
openNewWindow(aData);
// 如果需要关闭按钮后立即打开新窗口,可以将上述代码放入btn.Click事件中
// btn.Click += (_, __) => OpenWindow(aData, btn);
}
```
记得替换 `openNewWindow` 为你实际的函数,它应该接受一个字符串作为参数。如果你使用的是DataSet,那么代码中的索引可能需要相应调整。
阅读全文