Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我们可以访问可重用的DaysOfWeek控件吗?_C#_Winforms_Windows Mobile - Fatal编程技术网

C# 我们可以访问可重用的DaysOfWeek控件吗?

C# 我们可以访问可重用的DaysOfWeek控件吗?,c#,winforms,windows-mobile,C#,Winforms,Windows Mobile,只是想知道我们是否可以访问PocketOutlook DaysOfWeek控件/编辑器,或者是否有其他人免费使用了自己的控件/编辑器 我正在寻找与Outlook日历约会重复模式编辑器中的内容完全相同的内容 开放日历 创建新约会 单击“发生”,然后“

只是想知道我们是否可以访问PocketOutlook DaysOfWeek控件/编辑器,或者是否有其他人免费使用了自己的控件/编辑器

我正在寻找与Outlook日历约会重复模式编辑器中的内容完全相同的内容

  • 开放日历
  • 创建新约会
  • 单击“发生”,然后“
  • 单击“下一步”
  • 具有SMTWTFS的控件,在该控件中,您可以点击一天中的方块以启用/禁用,或使用硬件键导航
  • --更新------------------------

    啊,好吧,我只是自己控制

    不太难,我只使用了7个链接标签和点击处理程序。实际上,最困难的部分是在它周围获得一个边框(使用手动定位将白色链接标签放置在黑色面板中)。NET CF设计师认为我们不需要边界,这是荒谬的


    我使用value属性和ValueChanged事件公开了DaysOfWeek值。普雷斯托,每周一天的控制

    这些只是复选框控件。

    以下是我自制控件的一些代码片段:

    public partial class DaysOfWeekPicker : UserControl
    {
        public event EventHandler ValueChanged;
    
        private DaysOfWeek myValue;
    
        [DefaultValue (0)]
        public DaysOfWeek Value
        {
            get { return myValue; }
            set { myValue = value; RefreshData (); }
        }
    
        public DaysOfWeekPicker ()
        {
            InitializeComponent ();
        }
    
        private void DayOfWeekClick (object sender, EventArgs e)
        {
            if (Object.ReferenceEquals (sender, g_l_Sunday))
            {
                this.Value = this.Value ^ DaysOfWeek.Sunday;
            }
            else if (Object.ReferenceEquals (sender, g_l_Monday))
            {
                this.Value = this.Value ^ DaysOfWeek.Monday;
            }
            else if (Object.ReferenceEquals (sender, g_l_Tuesday))
            {
                this.Value = this.Value ^ DaysOfWeek.Tuesday;
            }
            else if (Object.ReferenceEquals (sender, g_l_Wednesday))
            {
                this.Value = this.Value ^ DaysOfWeek.Wednesday;
            }
            else if (Object.ReferenceEquals (sender, g_l_Thursday))
            {
                this.Value = this.Value ^ DaysOfWeek.Thursday;
            }
            else if (Object.ReferenceEquals (sender, g_l_Friday))
            {
                this.Value = this.Value ^ DaysOfWeek.Friday;
            }
            else if (Object.ReferenceEquals (sender, g_l_Saturday))
            {
                this.Value = this.Value ^ DaysOfWeek.Saturday;
            }
        }
    
        private void RefreshData ()
        {
            SetLabelDisplay (g_l_Sunday, (this.Value & DaysOfWeek.Sunday) == DaysOfWeek.Sunday);
            SetLabelDisplay (g_l_Monday, (this.Value & DaysOfWeek.Monday) == DaysOfWeek.Monday);
            SetLabelDisplay (g_l_Tuesday, (this.Value & DaysOfWeek.Tuesday) == DaysOfWeek.Tuesday);
            SetLabelDisplay (g_l_Wednesday, (this.Value & DaysOfWeek.Wednesday) == DaysOfWeek.Wednesday);
            SetLabelDisplay (g_l_Thursday, (this.Value & DaysOfWeek.Thursday) == DaysOfWeek.Thursday);
            SetLabelDisplay (g_l_Friday, (this.Value & DaysOfWeek.Friday) == DaysOfWeek.Friday);
            SetLabelDisplay (g_l_Saturday, (this.Value & DaysOfWeek.Saturday) == DaysOfWeek.Saturday);
    
            if (this.ValueChanged != null) this.ValueChanged (this, EventArgs.Empty);
        }
    
        private void SetLabelDisplay (LinkLabel label, bool enabled)
        {
            if (enabled)
            {
                label.BackColor = Color.Black;
                label.ForeColor = Color.White;
            }
            else
            {
                label.BackColor = Color.White;
                label.ForeColor = Color.Black;
            }
        }
    }
    
    也许有更好的方法进行价值比较,但这正是我很快想到的

    至于它的设计者部分,我不会把它放在这里,因为它冗长,但它相当简单。每天由一个链接标签表示,单击事件设置为DayOfWeekClick。每个链接标签位于(1,1)处,并且从is父面板的两个维度上都小2个像素。每个父面板都有一个黑色的前景色,提供边框效果。每个面板都设置为DockStyle.Left,并且总体控件大小相当于Panel.Width*7,Panel.Height