C # datagridview щелкните правой кнопкой мыши выберите строку и отобразите меню, чтобы вызвать форму для редактирования выбранной строки

Я ищу везде, но не могу найти решение своей проблемы, мне просто интересно, как сделать меню правой кнопкой мыши в представлении сетки данных для редактирования данных из SQL

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

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 и редактирует их ... используя меню правой кнопки мыши ...

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


person user1207105    schedule 13.02.2012    source источник
comment
Вы хотите открыть форму редактирования для записи, по которой вы щелкнули правой кнопкой мыши?   -  person Taryn    schedule 14.02.2012
comment
да .. это то, что я хочу сделать .. пожалуйста, помогите ...   -  person user1207105    schedule 18.02.2012


Ответы (1)


Я думаю, вам следует изучить этот MSDN-статья. В нем показано, как использовать 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;
    }
}
}
person ralf.w.    schedule 14.02.2012
comment
привет ralf.w. Я пытаюсь понять функции, но не могу их интерпретировать .... Я всего лишь новичок, надеюсь, вы понимаете ... У вас есть идеи, как это сделать? Благодарность.. - person user1207105; 16.02.2012
comment
@ user1207105: образец добавлен (было бы неплохо получить мой образец как принятый) - person ralf.w.; 19.02.2012
comment
привет снова ralf.w. tank вы для вашего примера кода, я немного изменил его, и он работает для меня .. POWER UP !!!! - person user1207105; 19.02.2012