2017-05-31 110 views
0

是否有可能从当前显示的标签打开(显示)的任何值?尝试突出显示相邻/相应的选项卡/链接标签。C#脱节链接标签导航TabControl - 如何突出显示当前标签打开链接标签

我使用链接标签作为选项卡的导航。项目完成时,真实(丑陋的顶部)标签将隐藏。

Link Label Intended Highlight Corresponds With Current Selected TAB

//LINK LABELS CLICK EVENTS TO DISPLAY/OPEN TABS 
     private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
     { 
      tabControl1.SelectedIndex = 0; 

      //COLOURS TO BE APPLIED WHEN THE CORRESPONDING TAB IS OPEN 
      linkLabel1.BackColor = Color.Black; 
      linkLabel1.ForeColor = Color.White; 
      linkLabel1.ActiveLinkColor = System.Drawing.Color.White; 
     } 

     private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
     { 
      tabControl1.SelectedIndex = 1; 
      txtFirstName.Focus(); 
     } 

     private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
     { 
      tabControl1.SelectedIndex = 2; 
     } 

@Idle_Mind答案后,我仍然不知道如何绑定/ wireup事件。这是任何人都具有同样的问题:

//LINK LABELS CLICK EVENTS TO DISPLAY/OPEN TABS 
     private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
     { 
      tabControl1.SelectedIndex = 0; 
      labels_LinkClicked(sender, e); 
     } 

     private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
     { 
      tabControl1.SelectedIndex = 1; 
      txtFirstName.Focus(); 
      labels_LinkClicked(sender, e); 
     } 

     private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
     { 
      tabControl1.SelectedIndex = 2; 
      labels_LinkClicked(sender, e); 
     } 


     //METHOD TO CALL ON EACH CLICK OF LINK LABELS 
     private void labels_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
     { 
      LinkLabel lbl = (LinkLabel)sender; 
      tabControl1.SelectedIndex = labels.IndexOf(lbl); 
      foreach (LinkLabel curLbl in labels) 
      { 
       curLbl.BackColor = (lbl == curLbl) ? Color.Black : Color.Transparent; 
      } 
     } 

回答

1

线了LinkClinked()事件相同的事件处理程序如下图所示:

private List<LinkLabel> labels; 

    private void Form2_Load(object sender, EventArgs e) 
    { 
     labels = new List<LinkLabel>() { linkLabel1, linkLabel2, linkLabel3 }; 
    } 

    private void labels_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
    { 
     LinkLabel lbl = (LinkLabel)sender; 
     tabControl1.SelectedIndex = labels.IndexOf(lbl); 
     foreach(LinkLabel curLbl in labels) 
     { 
      curLbl.BackColor = (lbl == curLbl) ? Color.Black : Color.Gray; 
     } 
    } 
+0

谢谢@Idle_Mind的帮助。次要更新我将上面的(连线)更改为您的建议,将未当前标签背景更改为透明并在表单加载(linkLabel1.BackColor = Color.Black;)时将LinkLabel1 bg颜色改为黑色。真棒。谢啦! – Kerry7777