2016-11-23 4 views
0

В моем DataGridView у меня есть DataGridViewLinkCell, и я хотел бы использовать теги для передачи произвольной строки обработчику событий DGV.C# Невозможно передать тег связанным элементом управления DataGridView с другим методом

Это мой код LinkCell:

DataGridViewLinkCell searchWU = new DataGridViewLinkCell(); 
searchWU.Value = "Check"; 
searchWU.LinkVisited = false; 
searchWU.Tag = "myTag"; 
this.hostMgmtDataGridView[colHostViewWUAvil, this.hostMgmtDataGridView.RowCount-2] = searchWU; 

И тогда мой код для обработчика событий в DGV в:

public void hostMgmtDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 
DataGridViewLinkCell derp = (DataGridViewLinkCell)sender; 
debugLabel1.Text = derp.Tag.ToString(); 
} 

Линия DataGridViewLinkCell derp = (DataGridViewLinkCell)sender; производит следующее сообщение об ошибке:

Unable to cast object of type 'System.Windows.Forms.DataGridView' to type 'System.Windows.Forms.DataGridViewLinkCell'.

Если я изменю его на DataGridView derp = (DataGridView)sender; Я получаю Null Reference с Object reference not set to an instance of an object.

Я понимаю ошибки, но я не знаю, как дразнить LinkCell из связанного с ним DataGridView.

Любая помощь будет оценена - спасибо!

ответ

0

object sender является контроль, а не выбранная ячейка вы можете найти ячейку с DataGridViewCellEventArgsRowIndex и ColumnIndex свойства

Попробуйте это (непроверенные)

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     debugLabel1.Text = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Tag.ToString(); 
    } 
+0

Это работало отлично! Спасибо! –