c# 右键菜单的问题!!!急!!!

symbol_bc 2008-09-22 09:36:13
请问如何在一个datagridview 上添加右键快捷菜单,还要自定义快捷菜单!!
...全文
244 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
iwannamoney 2009-12-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 symbol_bc 的回复:]
ContextMenustrip的ITEM的click事件好像和普通的click事件一样吧 都是(object sender, EventArgs e)这两个参数是吧,那怎么能取到右键单击的行的id呢
[/Quote]

private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Right && e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
for (int i = 0; i < dataGr[size=10px]
idView1.Rows.Count; i++)
{
dataGridView1.Rows[i].Selected = false;
}
dataGridView1.Rows[e.RowIndex].Selected = true;
}

}[/size]
crennah 2008-09-22
  • 打赏
  • 举报
回复

private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{

OleDbConnection myConnection = connectionOpen();
string deleteID = dataGridView1.SelectedRows[0].Cells[0].Value.ToString(); //获取ID了就根据ID写SQL语句或者存储过程对数据库的数据进行删除
//deleteID = dataGridView1.CurrentRow.Cells[0].Value.ToString();
string mySQL = "delete * from TEST WHERE ID='" + deleteID + "'";
MessageBox.Show(mySQL, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
myCommand = new OleDbCommand(mySQL, myConnection); //新建数据库命令。。。

int x = myCommand.ExecuteNonQuery();//返回影响行数
if (x > 0)
MessageBox.Show("删除成功!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
//如果大于0操作成功,小于等于0符合没有条件的行
else
MessageBox.Show("删除失败!可能是本数据不存在。。。", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.connectionClose(myConnection);
MainWindow_Load(null, null);
}
catch (ArgumentOutOfRangeException aore)
{
MessageBox.Show(aore.Message, "数据库更新失败");

throw;

}
}
阿达King哥 2008-09-22
  • 打赏
  • 举报
回复
你可以获取datagridview的某行某列的值,然后作为参数传递进去。
danjiewu 2008-09-22
  • 打赏
  • 举报
回复
建一个ContextMenuStrip,赋值给DataGridView的ContextMenuStrip
在ContextMenuStrip里添加你想要的ContextMenuStripItem
给ContextMenuStripItem添加触发事件

这样还不明白就没法了
yagebu1983 2008-09-22
  • 打赏
  • 举报
回复
网上有例子!!
hamehameha 2008-09-22
  • 打赏
  • 举报
回复
dataGridView因该有个select什么的方法,可以取到你当前选择的行,至于怎么从行里去取得某个单元格(你的id),你自己再去研究一下吧。
hamehameha 2008-09-22
  • 打赏
  • 举报
回复
那个可以全自动生成的,没必要自己手动去注册,添加代码什么的阿!!!!,你从来没用过c#?
hamehameha 2008-09-22
  • 打赏
  • 举报
回复
你把参数放到全局变量不行吗?
symbol_bc 2008-09-22
  • 打赏
  • 举报
回复
但是这样怎么取到行的id值呢?求大家帮忙
symbol_bc 2008-09-22
  • 打赏
  • 举报
回复
我是这么写的,
注册: this.dataGridView1.ContextMenuStrip.Items[0].Click += new System.EventHandler(
menuItems_Click);

初始化时:this.dataGridView1.ContextMenuStrip.Items.Add("增加");
this.dataGridView1.ContextMenuStrip.Items.Add("删除");
单击事件:
private void menuItems_Click(object sender, EventArgs e)
{
.. .. .. .
}

这样写对吗
symbol_bc 2008-09-22
  • 打赏
  • 举报
回复
ContextMenustrip的ITEM的click事件好像和普通的click事件一样吧 都是(object sender, EventArgs e)这两个参数是吧,那怎么能取到右键单击的行的id呢
hamehameha 2008-09-22
  • 打赏
  • 举报
回复
增加不需要传参数,所以直接把增加画面new出来,然后show出来就ok了,修改你需要传参数,怎么传就是你的事了,传了之后也是同样的把修改画面new了之后show出来。
hamehameha 2008-09-22
  • 打赏
  • 举报
回复
写在ContextMenustrip的每个ITEM的click事件里就行了
symbol_bc 2008-09-22
  • 打赏
  • 举报
回复
对了 就说说写在哪里就行!
hamehameha 2008-09-22
  • 打赏
  • 举报
回复
楼主不要告诉我你代码不会写,我们最多告诉你代码写在哪里。
stormcsharp 2008-09-22
  • 打赏
  • 举报
回复
其实上边已经解决了
hamehameha 2008-09-22
  • 打赏
  • 举报
回复
ContextMenustrip比ContextMenu多了一些东西,是ContextMenu的扩展,framework2.0新增的类
symbol_bc 2008-09-22
  • 打赏
  • 举报
回复
我要在右键菜单上增加几个功能,“增加”就跳到增加页面,“修改”就取得该行的id跳到修改页面,怎么实现呢
JeffChung 2008-09-22
  • 打赏
  • 举报
回复
.net2.0升级为ContextMenustrip
差不多的
symbol_bc 2008-09-22
  • 打赏
  • 举报
回复
还想问一下 ContextMenu 和ContextMenustrip 有什么不一样
加载更多回复(2)

111,094

社区成员

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

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

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