2009-01-07 81 views
0

想知道我們是否可以訪問PocketOutlook DaysOfWeek控件/編輯器,或者其他人是否已經自由使用。我們可以訪問可重用的DaysOfWeek控件嗎?

我正在尋找與Outlook日曆約會重複出現模式編輯器中的內容完全相同的內容。

  1. 打開日曆
  2. 創建一個新的約會
  3. 點擊 「發生」,然後在 「編輯< ...模式>」
  4. 單擊 「下一步」
  5. 有SMTWTFS控制,您可以點擊廣場上的一天來啓用/禁用,或使用硬件按鍵導航。

--update ------------------------

很好啊,我剛剛推出我自己的控制。

不太難,我只用了7個LinkLabels w/click處理程序。實際上最難的部分是圍繞它的邊框(使用手動定位將白色的鏈接標籤放置在黑色面板內)。 .NET CF設計者認爲我們不需要BORDERS是很荒謬的。

我使用Value屬性和ValueChanged事件公開了DaysOfWeek值。 Presto,一個DaysOfWeek控件!

回答

1

下面是一些代碼段爲我控制家釀:

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

有可能是一個更好的辦法做到價值比較,但是這正是我很快想出了。

只要設計師的一部分,我不會把它放在這裏,因爲它的冗長,但它很簡單。每天都有一個LinkLabel,點擊事件設置爲DayOfWeekClick。每個LinkLabel都在(1,1)處,並且在兩個維度上都小於父面板的2個像素。每個父面板都有一個黑色的ForeColor,給出邊框效果。每個面板都設置爲DockStyle.Left,整體控制尺寸等同於panel.Width * 7,panel.Height。

1

這些只是複選框控件。

相關問題