C# WinForm 用ContextMenuStrip往DataGridView中添加/删除行 该如何实现?

cnbaixf 2018-06-12 06:00:29
窗体有5个TabPage,每个TabPage中一个DataGridView。每个DataGridView读取一个File中的数据。

在窗体增加一个ContextMenuStrip用于往当前Page的DataGridView中添加/删除 行。
该如何实现?

窗体中有个TabControl控件,Name是 tabResults


namespace Test
{
public partial class TestUI : Form
{
List<string> ParameterFiles=new List<string>();//参数文件列表

private void InitPages()
{
for(string file in ParameterFiles)
{
TabPage page = new TabPage();
DataGridView dgv = new DataGridView();
page.Controls.Add(dgv);
if(……)
LoadAPage(file,dgv);
else
LoadBPage(file,dgv)
}
}

private void LoadAPage(string file,DataGridView dgv)
{
……
}

private void LoadBPage(string file,DataGridView dgv)
{
……
DataTable table=new DataTable();

……//从file中读取数据到table中

BindingSource source = new BindingSource();
source.DataSource = table;
dgv.DataSource = source;
}
}
}
...全文
758 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnbaixf 2018-06-15
  • 打赏
  • 举报
回复
引用 2 楼 yuankaiwsl 的回复:
首先DataGridView.ContextMenuStrip=contextMenuStrip1; 然后菜单选项里Click事件 foreach ((DataGridView)contextMenuStrip1.SourceControl).SelectedRows,Rows.Remove() 。。。 ((DataGridView)contextMenuStrip1.SourceControl).Rows.Add
非常感谢。 在没有绑定数据源的DataGridView里成功添加行了,但是绑定了数据源的DataGridView无法直接添加。 我试了下把DataTable table=(DataTable)((DataGridView)contextMenuStrip1.SourceControl).DataSource; 但是运行时会报错,无法将类型为……BindingSource的对象强制转换为……DataTable类型 有什么办法往数据源DataTable中添加行吗?
巴士上的邂逅 2018-06-15
  • 打赏
  • 举报
回复
DataTable table=((BindingSource)(DataTable)((DataGridView)contextMenuStrip1.SourceControl).DataSource).DataSource;
巴士上的邂逅 2018-06-15
  • 打赏
  • 举报
回复
DataTable.Rows.Add
巴士上的邂逅 2018-06-12
  • 打赏
  • 举报
回复
首先DataGridView.ContextMenuStrip=contextMenuStrip1; 然后菜单选项里Click事件 foreach ((DataGridView)contextMenuStrip1.SourceControl).SelectedRows,Rows.Remove() 。。。 ((DataGridView)contextMenuStrip1.SourceControl).Rows.Add
cnbaixf 2018-06-12
  • 打赏
  • 举报
回复

private void Dgv_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
TabPage page = (TabPage)dgv.Parent;
int index = tabResults.TabPages.IndexOf(page);
if(index==0||index==1)
if (e.Button == System.Windows.Forms.MouseButtons.Right && e.ColumnIndex > -1 && e.RowIndex > -1)
{
for (int i = 0; i < dgv.RowCount; i++)
dgv.Rows[i].Selected = false;
dgv.Rows[e.RowIndex].Selected = true;
this.contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
}
}

这是我写的右键菜单。其中有两项,添加和删除。删除那项click事件中直接用SendKeys.Send("{DEL}");删除了行。添加功能试了很久都没实现。有没有大佬解惑一下该怎么Add Row

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧