处理此事件的责任在哪里?

时间:2011-01-25 19:09:47

标签: c# winforms events user-controls

我有一个NavigationBar.cs用户控件。 我也有NavigationItem.cs用户控件。

以下是两者的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Uboldi.CustomUI
{
    public partial class NavigationBar : UserControl
    {
        public NavigationBar()
        {
            InitializeComponent();
        }

        public List<NavigationItem> NavigationItems { private get; set; }
        public NavigationItem SelectedItem { get; set; }
    }
}


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Uboldi.CustomUI
{
    public partial class NavigationItem : UserControl
    {
        public NavigationItem()
        {
            InitializeComponent();
        }

        private Image _picture = null;
        public Image Picture
        {
            get
            {
                return _picture;
            }
            set
            {
                _picture = value;
                ptbIcon.Image = _picture;
            }
        }

        private string _content = null;
        public string Content 
        {
            get
            {
                return _content;
            }
            set
            {
                _content = value;
                lblDisplayText.Text = _content;
            }
        }
    }
}

我只希望导航栏中的单个NavigationItem在任何给定时间都被“选中”。

当选择一个项目时,将给它一个不同的颜色。

我的问题是,我应该在哪里编写此代码?在栏中,或者是按钮应该做什么并让栏只调用SetYourSelfAsSelected()方法?

感谢。

1 个答案:

答案 0 :(得分:0)

我会在NavigationBar中实现此功能,原因如下:其他一些开发人员可以在不同的上下文中使用您的NavigationItem,其中没有标记任何活动项或标记任何不同的项。或者想要重载NavigationBar以实现活动项的另一种行为。