2017-10-10 45 views
0

我正在使用DevExpress 16,我正在使用數據庫數據動態調度約會。現在,我安排了我的預約。我需要以編程方式更改約會標籤背景顏色。如何以編程方式在winforms中更改Devexpress XtraScheduler控件約會標籤背景顏色?

我發現了一些代碼來改變約會標籤背景顏色,這樣,

Dim labels As AppointmentLabelCollection = schedulerControl1.Storage.AppointmentStorage.Labels 
For i As Integer = 0 To labels.Count - 1 
    Dim currentLabel As AppointmentLabel = labels(i) 
    If currentLabel.Color = someColor Then 
     newApt.LabelId = i 
     Exit For 
    End If 
Next 

但是,我無法使用此代碼來設置背景顏色,它讓我看到了如下錯誤:

Code error

我相信這上面的錯誤是由於AppointmentStorage在設計時(在調度控制的屬性窗口中)本身禁用。請參考下面的圖片:

See properties, that appointment->Storage->SchedulerStorage1

任何幫助將不勝感激。

+0

你的標題指出你想知道如何做出改變編程,但你已經知道該怎麼做。你剛剛發佈瞭如何做到這一點。你的問題似乎表明,你真正想要的是通過設計師進行改變。是這樣嗎?請編輯您的問題或標題,以免它們互相矛盾。 – jmcilhinney

+0

您提供的代碼示例似乎在搜索所有標籤,並且當它找到與某種顏色匹配的標籤時,它將更改您定義的約會空約會的labelID(順便說一句,這些標籤似乎已被標記爲過時)在你的代碼中。可悲的是,代碼對我來說毫無意義。當然你應該改變'.Color'屬性。無論是否在設計時禁用了某些東西,都不應該影響您正在編寫的代碼。 –

回答

0

去通過文檔:Appointment Labels and Statuses

標籤都存儲在AppointmentStorage.Labels收藏。一個 個別標籤由AppointmentLabel對象表示。若要 訪問標籤的顯示名稱和顏色,請使用其 UserInterfaceObject.DisplayName和AppointmentLabel.Color屬性。

而不是使用約會的標籤,您可以在SchedulerControl.CustomDrawAppointmentBackground事件處理程序中繪製約會的背景。這是另一種可以用來定製皮膚外觀的方法。您可以使用其他自定義繪製事件也..從文檔

例子:

public static void scheduler_CustomDrawAppointmentBackground(object sender, CustomDrawObjectEventArgs e) 
{ 
    AppointmentViewInfo viewInfo = e.ObjectInfo as AppointmentViewInfo; 
    // Specify the ratio of a completed task to the entire task. 
    double completenessRatio = 0.25 * ((int)(viewInfo.Appointment.ResourceId) % 4); 
    // Draw an appointment as usual. 
    e.DrawDefault(); 
    // Draw a background rectangle. 
    Rectangle bounds = CalculateEntireAppointmentBounds(viewInfo); 
    DrawBackGroundCore(e.Cache, bounds, completenessRatio); 
    // Indicate that no default drawing is required. 
    e.Handled = true; 
} 
相關問題