如圖:
//1.添加一個超鏈接列,並控制其大小不可改變,固定大小
DataGridViewLinkColumn dgvlcOprate = new DataGridViewLinkColumn();
dgvlcOprate.HeaderText = "操作";
dgvlcOprate.Width = 120;
dgvlcOprate.Resizable = DataGridViewTriState.False;//設置此列不可調整大小
dgvlcOprate.Name = "oprate";
dgvData.Columns.Add(dgvlcOprate);
//2.設置單元格中連接的操作
dgvData.Rows[index].Cells["oprate"].Value = "查看" + " | " + "編輯" + " | " + "刪除";
//3.獲取鼠標在單元格中點擊的位置
int mouseX = 0;
int mouseY = 0;
private void dgvData_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex > -1)
{
if (dgvData.Columns[e.ColumnIndex].Name == "oprate")
{
mouseX = e.X;
mouseY = e.Y;
}
}
}
//4.在點擊當前單元格時,鼠標點擊的位置和單元格的寬度比較,控制點擊的位置,算出點擊的是哪裏,控制點擊的事件
private void dgvData_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > -1)
{
switch (dgvData.Columns[e.ColumnIndex].Name)
{
case "oprate":
Rectangle rc = dgvData.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false);//單元格區域的矩形
if (0 < mouseX && mouseX < rc.Width / 3)
{
MessageBox.Show("查看" + e.RowIndex + "行" + e.ColumnIndex + "列");
}
else if (rc.Width / 3 < mouseX && mouseX < ((rc.Width / 3) * 2))
{
MessageBox.Show("編輯" + e.RowIndex + "行" + e.ColumnIndex + "列");
}
else if (((rc.Width / 3) * 2) < mouseX && mouseX < rc.Width)
{
MessageBox.Show("刪除" + e.RowIndex + "行" + e.ColumnIndex + "列");
}
break;
}
}
}
Winform下DataGridView 一個單元格中實現多個超鏈接
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.