2012-02-13 48 views
1

我每天的搜索中,但我不能找到一个解决我的问题 我只是想知道如何在数据网格视图中的右键菜单从SQLC#的datagridview点击右键选择行和显示菜单呼吁编辑表格的行选择

这是我用于创建右键单击上下文菜单的代码,但我不能把表单以获取也曾经是我右键单击它并编辑的数据行的数据编辑数据..

public void Rightclick() 
    { 
     ContextMenu Rmnu = new ContextMenu(); 
     MenuItem mnuCCS = new MenuItem("Change Class Size"); 
     MenuItem mnuDeactv = new MenuItem("Deactivate"); 

     mnuCCS.Click += new EventHandler(radGridView_Class_View_Click); 
     mnuDeactv.Click += new EventHandler(radGridView_Class_View_Click); 

     Rmnu.MenuItems.AddRange(new MenuItem[] { mnuCCS, mnuDeactv }); 
     radGridView_Class_View.ContextMenu = Rmnu; 



    } 
    private void radGridView_Class_View_Click(object sender, EventArgs e) 
    { 
     Rightclick(); 
    } 

我要创建编辑表单......从那个数据网格中获取数据并对其进行编辑..使用右键菜单...

有人可以帮我..谢谢...

+0

你想打开,你必须用鼠标右键单击该记录的编辑表单? – Taryn 2012-02-14 19:36:38

+0

是..这就是我想要做的..请帮助... – user1207105 2012-02-18 00:56:03

回答

3

我想,你应该看看这个MSDN-article。它显示了如何针对您的问题使用ContextMenuStrip

样品下面:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace test1 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     // Test-Data 
     dataGridView1.DataSource = GetTestData(); 

     // Add menu 
     AddContextMenu(dataGridView1); 

     // remember mouse location 
     AddMouseEnterEvent(); 
    } 

    private DataTable GetTestData() 
    { 
     DataTable tab = new DataTable(); 
     DataColumn c1 = new DataColumn("col1"); 
     DataColumn c2 = new DataColumn("col2"); 
     tab.Columns.AddRange(new DataColumn[] { c1, c2 }); 
     DataRow r1 = tab.NewRow(); r1[c1] = "cell 1"; r1[c2] = "cell 2"; 
     DataRow r2 = tab.NewRow(); r2[c1] = "cell 3"; r2[c2] = "cell 4"; 
     tab.Rows.Add(r1); 
     tab.Rows.Add(r2); 

     return tab; 
    } 

    private void AddContextMenu(DataGridView dgv) 
    { 
     var strip = new ContextMenuStrip(); 
     var menu1 = strip.Items.Add("Change Class Size"); 
     var menu2 = strip.Items.Add("Deactivate"); 

     menu1.Click += new EventHandler(menu1_Click); 
     menu2.Click += new EventHandler(menu2_Click); 
     foreach (DataGridViewColumn column in dgv.Columns) 
     { 
      column.ContextMenuStrip = strip; 
     } 
    } 

    DataGridViewCellEventArgs mouseLocation; 
    void AddMouseEnterEvent() 
    { 
     dataGridView1.CellMouseEnter += (s,e) => { mouseLocation = e; }; 
    } 

    void menu2_Click(object sender, EventArgs e) 
    { 
     var cell = dataGridView1.Rows[mouseLocation.RowIndex].Cells[mouseLocation.ColumnIndex]; 
     // do something stupid 
     cell.Style.BackColor = Color.Red; 
    } 

    void menu1_Click(object sender, EventArgs e) 
    { 
     var cell = dataGridView1.Rows[mouseLocation.RowIndex].Cells[mouseLocation.ColumnIndex]; 
     // do something even more stupid 
     cell.Style.BackColor = Color.Blue; 
    } 
} 
} 
+0

hi ralf.w.我尝试了解功能,但我无法解释它....我只是一个初学者希望你明白...你有一些想法如何做到这一点?谢谢.. – user1207105 2012-02-16 01:23:38

+0

@ user1207105:添加了样本(很高兴让我的样本被接受) – 2012-02-18 23:41:51

+0

hi again ralf.w.坦克你为你的示例代码我修改它一点,它适用于我..电源! – user1207105 2012-02-19 08:26:13