C#을 사용하여 DataGridView
의 특정 열을 마우스 오른쪽 단추로 클릭 할 때 ContextMenuStrip
(CMS) 만 표시하려고합니다. 내가 DataGridView_CellContentClick
및/또는 dataGridView1.HitTest()
을 사용해야하는지 혼란 스럽습니다. 그런 다음 마우스 오른쪽 버튼으로 클릭 한 셀의 데이터를 새 양식 창으로 보내고 싶습니다.DataGridView ContextMenuStrip의 특정 열을 마우스 오른쪽 단추로 클릭
현재 코드에 이상한 동작이 있습니다. 첫 번째로 클릭하거나 네 번째 열을 마우스 오른쪽 버튼으로 클릭하지 않으면 CMS가 표시되지 않습니다. 그러나 일단 그것이 있으면 오른쪽 클릭에 항상 CMS가 표시됩니다.
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 4)
{
//Create the ContextStripMenu for Creating the PO Sub Form
ContextMenuStrip Menu = new ContextMenuStrip();
ToolStripMenuItem MenuOpenPO = new ToolStripMenuItem("Open PO");
//Assign event handlers
MenuOpenPO.MouseUp += new MouseEventHandler(MenuOpenPO_Click);
Menu.Items.AddRange(new ToolStripItem[] { MenuOpenPO });
//Assign created context menu strip to the Datagrid
dataGridView1.ContextMenuStrip = Menu;
}
}
void MenuOpenPO_Click(object sender, MouseEventArgs e)
{
var ht = dataGridView1.HitTest(e.X, e.Y);
MessageBox.Show("Hello2");
PO_Form POWindow = new PO_Form();
POWindow.Show();
}
나는 셀 값을 잡기 위해
var ht = dataGridView1.HitTest(e.X, e.Y);
을 사용하려고했다.
감사합니다. 감사합니다.
편집 1 그래서 dataGridView1_CellContentClick을 업데이트하여 찾고자하는 동작에 매우 가깝습니다. 처음 4 열을 클릭하면 다음 오른쪽 클릭하면 내 CMS가 나타납니다. 다른 열의 다른 셀을 클릭하면 CMS가 더 이상 존재하지 않습니다. 그러나 난 그냥 CMS를 만들려면 먼저 왼쪽을 클릭하지 않고 열 4에서 셀을 마우스 오른쪽 단추로 수 싶습니다. 나는 VB에서 이런 짓을
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 4)
{
//MessageBox.Show("Hello1");
//Create the ContextStripMenu for Creating the PO Sub Form
ContextMenuStrip Menu = new ContextMenuStrip();
ToolStripMenuItem MenuOpenPO = new ToolStripMenuItem("Open PO");
//Assign event handlers
MenuOpenPO.MouseUp += new MouseEventHandler(MenuOpenPO_Click);
Menu.Items.AddRange(new ToolStripItem[] { MenuOpenPO });
//Assign created context menu strip to the Datagrid
dataGridView1.ContextMenuStrip = Menu;
}
else
dataGridView1.ContextMenuStrip = null;
}
나는 당신이 원하는 것을 실제로 얻지 못합니까? 마우스에서 마우스 오른쪽 버튼을 클릭하면 어떤 데이터를 셀에서 가져 오려고합니까? –
ContextMenuStrip (CMS)에서 네 번째 열이 오른쪽 클릭 된 경우에만 표시되기를 원합니다. 그런 다음 CMS에서 "Open PO"를 클릭하고 해당 오른쪽 클릭 셀의 데이터를 새 Windows 양식으로 보내도록하고 싶습니다. – Matt