前幾天公司用的物料管理系統出現了一個很奇怪的問題,具體的現象是:10月31號的那天,物流部的人因為之前的問題,需要將之前已經結轉的9月份取消結轉。
,當操作人員將10改變為9的時候,出現問題了。程式直接崩潰,並且報了“年、月和日引數描述無法表示的 DateTime”
這個錯誤。經過一系列的除錯 與查資料文件,發現是C#DatetimePicker這個控制元件本身的問題,具體原因是DatetimePicker
這個控制元件會在繪製的時候,預設將當前年月日作為本身value,然後,如果他的屬性中的style設定為只顯示年月的時候,如果貿然改變月份,他會有一個校驗機制。
校驗修改後的月份是否存在這一天。解決方法是:在窗體載入時候給空間賦予一個預設的value,考慮到業務邏輯的影響,定位當月一號為預設日期。解決方法如下:
"新增窗體載入事件 /// <summary>/// 新增窗體載入事件,給窗體中兩個datepicker控制元件的value賦值/// 賦的值為當月一號/// </summary>/// <param name=""sender""></param>/// <param name=""e""></param>private void FrmMonthCarry_Load(object sender, EventArgs e){ this.datePickerMonth.Value = DateTime.Now.AddDays(1 - DateTime.Now.Day); this.dateCancel.Value = this.datePickerMonth.Value; }"
前幾天公司用的物料管理系統出現了一個很奇怪的問題,具體的現象是:10月31號的那天,物流部的人因為之前的問題,需要將之前已經結轉的9月份取消結轉。
,當操作人員將10改變為9的時候,出現問題了。程式直接崩潰,並且報了“年、月和日引數描述無法表示的 DateTime”
這個錯誤。經過一系列的除錯 與查資料文件,發現是C#DatetimePicker這個控制元件本身的問題,具體原因是DatetimePicker
這個控制元件會在繪製的時候,預設將當前年月日作為本身value,然後,如果他的屬性中的style設定為只顯示年月的時候,如果貿然改變月份,他會有一個校驗機制。
校驗修改後的月份是否存在這一天。解決方法是:在窗體載入時候給空間賦予一個預設的value,考慮到業務邏輯的影響,定位當月一號為預設日期。解決方法如下:
"新增窗體載入事件 /// <summary>/// 新增窗體載入事件,給窗體中兩個datepicker控制元件的value賦值/// 賦的值為當月一號/// </summary>/// <param name=""sender""></param>/// <param name=""e""></param>private void FrmMonthCarry_Load(object sender, EventArgs e){ this.datePickerMonth.Value = DateTime.Now.AddDays(1 - DateTime.Now.Day); this.dateCancel.Value = this.datePickerMonth.Value; }"