i有一个X链路标签的数组,该数组是生成并放置在具有3列和n行的表中,其中x是列 *行。
private void updateLayout(int numRows)
{
int eColCount = editTable.ColumnCount; //-- Edit Column Count (3)
LinkLabel[] eLabels = new LinkLabel[numRows * eColCount]; //-- Array of edit labels to be populated
for (int row = 0; row < numRows; row++)
{
//-- Add new edit row --//
editTable.RowStyles.Add(new RowStyle(SizeType.AutoSize));
editTable.RowCount = numRows - (numRows - row);
for (int col = 0; col < eColCount; col++)
{
//-- Populate columns of new row --//
eLabels[row + col] = new LinkLabel();
popERow(eLabels, row, col); //-- Changes name text based on col index
editTable.Controls.Add(eLabels[row + col], col, row);
}
}
}
我想创建一个链接单击事件方法,该方法启动具有不同字符串变量的新表单,具体取决于行。这是定义标签“ lbllinkedit”的链接点击事件。
private void lblLinkEdit_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//Launch title edit form
Cursor c = this.Cursor;
this.Cursor = Cursors.WaitCursor;
frmTitleEdit titleEdit = new frmTitleEdit(commitName.Text);
titleEdit.ShowDialog();
this.Cursor = c;
}
有一种方法可以制作一般方法来处理数组中的这些唯一链接标签?
在评论中提到
LinkClicked
事件处理程序附加到您的LinkLabel
S。这取决于您从触发事件的单元格中动态获取所需的文本。您需要为此使用
sender
参数。这里是基于您的代码的示例:
private void updateLayout(int numRows)
{
int eColCount = editTable.ColumnCount;
LinkLabel[] eLabels = new LinkLabel[numRows * eColCount];
for (int row = 0; row < numRows; row++)
{
editTable.RowStyles.Add(new RowStyle(SizeType.AutoSize));
editTable.RowCount = numRows - (numRows - row);
for (int col = 0; col < eColCount; col++)
{
eLabels[row + col] = new LinkLabel();
popERow(eLabels, row, col); //-- Changes name text based on col index
//Add common event handler
eLabels[row + col].LinkClicked += lblLinkEdit_LinkClicked;
editTable.Controls.Add(eLabels[row + col], col, row);
}
}
}
private void lblLinkEdit_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Cursor c = this.Cursor;
this.Cursor = Cursors.WaitCursor;
LinkLabel clickedLinkLabel = (LinkLabel)sender;
frmTitleEdit titleEdit = new frmTitleEdit(...Get what ever dynamic text you want from clickedLinkLabel...);
titleEdit.ShowDialog();
this.Cursor = c;
}