读书人

contextMenuStrip 控件高手指?解

发布时间: 2012-03-07 09:13:51 作者: rapoo

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上弹出右键的问题,懒得写代码了,你自己解决一下吧
另外就是有些代码没有优化,自己看下

读书人网 >C#

热点推荐