【问题标题】:C# Disjointed Link Labels Navigation for TabControl - How to highlight current tab open with link labelsTabControl 的 C# 脱节链接标签导航 - 如何使用链接标签突出显示当前打开的选项卡
【发布时间】:2017-11-01 22:39:11
【问题描述】:

是否可以从当前显示的打开(显示)的 tabcontrol 中获取任何值?试图突出显示相邻/对应的选项卡/链接标签。

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

//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 回答后,我仍然不确定如何绑定/连接事件。这适用于其他有相同问题的人:

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

【问题讨论】:

    标签: c# winforms visual-studio user-interface


    【解决方案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;
            }
        }
    

    【讨论】:

    • 感谢@Idle_Mind 的帮助。次要更新我进行了您建议的上述(连线)更改,将非当前标签背景更改为透明并在表单加载时将 LinkLabel1 bg 颜色设为黑色(linkLabel1.BackColor = Color.Black;)。惊人的。谢谢大佬!
    猜你喜欢
    • 2012-02-24
    • 2018-12-12
    • 1970-01-01
    • 2015-08-23
    • 2016-10-01
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 2012-09-13
    相关资源
    最近更新 更多