datagridview中可以有两个不同类型的链接列吗?

时间:2013-04-08 20:47:42

标签: c# winforms

如果是这样,我们如何分别处理每个单元的cellcontentclick事件?我正在动态添加列。继承我的代码: - dataGridViewShow.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "Date", DataPropertyName = "Date", CellTemplate = new DataGridViewTextBoxCell() });

DataGridViewLinkColumn toComputer = new DataGridViewLinkColumn();
        toComputer.HeaderText = "Status";
        toComputer.Name = "link1";
        toComputer.UseColumnTextForLinkValue = true;
        toComputer.Text = "Save to File";
        toComputer.ActiveLinkColor = Color.White;
        toComputer.LinkColor = Color.Blue;
        toComputer.TrackVisitedState = true;
        toComputer.VisitedLinkColor = Color.Green;
        dataGridViewShow.Columns.Add(toComputer);
        dataGridViewShow.CellContentClick += (SaveFileType_click);  

DataGridViewLinkColumn toNet = new DataGridViewLinkColumn();
        toLinx.HeaderText = " ";
        toLinx.Name = "link2";
        toLinx.UseColumnTextForLinkValue = true;
        toLinx.Text = "Send to Net";
        toLinx.ActiveLinkColor = Color.White;
        toLinx.LinkColor = Color.Blue;
        toLinx.TrackVisitedState = true;
        toLinx.VisitedLinkColor = Color.Green;            
        dataGridViewShow.Columns.Add(toNet);
        dataGridViewShow.CellContentClick += ("Don't know how this gets handled");  

上面的代码确实显示了两个不同的链接类型列,但我无法弄清楚如何单独处理每个事件?

private void SaveFileType_click(object sender, DataGridViewCellEventArgs e)
    {
        selectedRow = e.RowIndex;

        if (e.ColumnIndex == 0)
        {
            //some code goes here
        }if (e.ColumnIndex == 1 && (string)dataGridViewShow[e.ColumnIndex, e.RowIndex].Value != "Complete")
        {
            //some code goes here
        }
    }

1 个答案:

答案 0 :(得分:2)

您不单独处理事件。您需要处理OnCellClickCellContentClick事件。然后使用DataGridViewCellEventArgs对象e,您可以获取单击的列和行。根据选择的单元格,您可以区别对待事件

public void dataGridView1_OnCellClick(object sender,
    DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == YourLinkColumnIndexA)
        //some code goes here.
    else if (e.ColumnIndex == YourLinkColumnIndexB)
        //some code goes here.
}

所以你在代码中连接事件,但只有一次

我希望这会有所帮助。