contextMenuStrip 控件,高手指?
本人在contextMenuStrip控件添加了三Item,制,粘,剪切,然後和datagridview定,我中datagridview中的元格後右元格後出三Item,我制後,要制此元格中的容再粘到下一中的元格。就像是在EXCEL中操作一。
在制CLICK事件怎?後面的粘和剪切一怎呢?
[解决办法]
ContextMenuStrip context = new ContextMenuStrip();
ToolStripMenuItem tool = new ToolStripMenuItem();
tool.Text = "Copy ";
context.Items.AddRange(new ToolStripMenuItem[]{ tool });
tool.Click += new EventHandler(tool_Click);
void tool_Click(object sender, EventArgs e)
{
//do copy
}
[解决办法]
难倒是不难,就是繁琐,本来只想给你说下思路的,不过因为自己没做过,所以做了下测试,既然代码都写了,那就给你贴出来吧
注意下SelectionMode属性应为CellSelect
private void btnCopy_Click(object sender, EventArgs e) //复制
{
if (dataGridView3.CurrentCell.RowIndex != -1)
{
string value = dataGridView3.CurrentCell.Value.ToString();
Clipboard.SetData(DataFormats.Text, value);
}
}
private void btnCut_Click(object sender, EventArgs e) //剪切
{
if (dataGridView3.CurrentCell.RowIndex != -1)
{
dataGridView3.CurrentCell.Value = Clipboard.GetData(DataFormats.Text).ToString();
}
}
private void btnPaste_Click(object sender, EventArgs e) //粘贴
{
if (dataGridView3.CurrentCell.RowIndex != -1)
{
dataGridView3.CurrentCell.Value = Clipboard.GetData(DataFormats.Text).ToString();
}
}
private void dataGridView3_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex != -1 && e.ColumnIndex != -1)
{
for (int i = 0; i < dataGridView3.SelectedCells.Count; i++)
{
dataGridView3.SelectedCells[i].Selected = false;
}
dataGridView3.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected = true;
dataGridView3.CurrentCell = dataGridView3.Rows[e.RowIndex].Cells[e.ColumnIndex];
}
}
不过还有个在RowHeaders上弹出右键的问题,懒得写代码了,你自己解决一下吧
另外就是有些代码没有优化,自己看下