add链接单击事件以链接阵列中的链接标签

问题描述 投票:0回答:1

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; }

有一种方法可以制作一般方法来处理数组中的这些唯一链接标签?
    

在评论中提到
winforms
1个回答
0
投票
:您可以通过编程方式将

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;
}
        

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.