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

+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

こんにちはralf.w.私は機能を理解しようとしますが、私はそれを解釈することはできません....私はあなたが理解している初心者の希望です...あなたはそれを行う方法をいくつか考えていますか?ありがとう.. – user1207105

+0

@ user1207105:サンプルが追加されました(受け入れられるように私のサンプルを入手するのが良いでしょう) –

+0

こんにちはralf.w.あなたのサンプルコードのタンク私は少しそれを変更し、私のために働く..パワーアップ!!!! – user1207105

関連する問題