2012-02-13 38 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

相關問題