[英]How to Bind to a methods in Windows Forms
我試圖將monthCalendar
日期綁定到MyDate
屬性,並避免循環調用,但是monthCalendar沒有get;set;
;。 當前所選日期的屬性。 它只有方法SetDate(DateTime date);
用於設置新的日期和事件monthCalendar1_DateChanged
, monthCalendar1_DateSelected
用於返回當前選擇的日期。 如何將它們綁定到MyDate
屬性? 在WPF中,方法可用作資源,因此可以綁定到其結果。 如何在System.Windows.Forms
實現呢?
private static readonly object _dateLock = new object();
private DateTime myDate = DateTime.Now;
public DateTime MyDate
{
get
{
lock (_dateLock)
{
//updating control
return myDate;
}
}
set
{
lock (_dateLock)
{
//getting date from control
myDate = value;
SetDate(new DateTime(myDate.Ticks));
}
}
}
//Fired when date changed
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
//update source
lock (_dateLock)
{
MyDate = new DateTime(e.Start.Ticks);
}
}
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
//Check if bottom region with current date clicked
if (IsCurrentDateClikced())
{
//update source
lock (_dateLock)
{
MyDate = new DateTime(DateTime.Now.Ticks); ;
}
}
}
如果我將這些添加到二傳手
set
{
lock (_dateLock)
{
// Setting date
myDate = value;
monthCalendar1.TodayDate = myDate;
monthCalendar1.SelectionStart = myDate;
monthCalendar1.SelectionEnd = myDate;
}
}
日歷反應正常。 在這里沒有發生循環觸發,可能是因為一旦它們具有相同的日期,就不會因為沒有變化而觸發Changed
事件?
我不得不注釋掉if (IsCurrentDateClikced())
。 是否存在?
我已經通過添加通知解決了它。
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
//update source
lock (_dateLock)
{
MyDate = new DateTime(e.Start.Ticks);
NotifyPropertyChanged("MyDate");
}
}
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
//Check if bottom region with current date clicked
if (IsCurrentDateClikced())
{
//update source
lock (_dateLock)
{
MyDate = new DateTime(DateTime.Now.Ticks);
NotifyPropertyChanged("MyDate");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.