2012-02-13 1 views
1

i поиск везде, но я не могу найти решение моей проблемы Мне просто интересно, как сделать меню правой кнопки мыши в виде сетки данных редактировать данные из 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(); 
    } 

Я хочу создать форму для редактирования ..., которая получает данные из datagrid и редактирует ее .. с помощью меню правой кнопки мыши ...

может кто-нибудь помочь мне .. спасибо ...

+0

Вы хотите открыть форму редактирования для записи, которую вы имеете правой кнопкой мыши на? – Taryn

+0

да .. это, что я хочу .. пожалуйста, помогите ... – user1207105

ответ

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

+0

@ user1207105: образец добавлен (было бы неплохо получить мой образец как принято) –

+0

привет снова ralf.w. танк ты для своего примера кода, я немного его модифицирую, и он работает для меня .. POWER UP !!!! – user1207105