我有一個被遮罩的文本框綁定到nullabe日期時間,但是當日期空白時,掩碼文本框上的驗證將不會完成。有沒有辦法強制這種行爲?我想要一個空白的文本框等於一個空的DateTime。綁定可以爲空的DateTime到MaskedTextBox
當文本框已經爲空時,驗證工作。它只有當有一個日期已經綁定的時候纔會中斷,我試圖將其清空。
我有一個被遮罩的文本框綁定到nullabe日期時間,但是當日期空白時,掩碼文本框上的驗證將不會完成。有沒有辦法強制這種行爲?我想要一個空白的文本框等於一個空的DateTime。綁定可以爲空的DateTime到MaskedTextBox
當文本框已經爲空時,驗證工作。它只有當有一個日期已經綁定的時候纔會中斷,我試圖將其清空。
我想通了,它沒有與審定做。這是日期被解析回日期時間。
這可能不是最優雅的方式來做到這一點,但它確實有效。如果有人知道更好的方法,請告訴我。
我現在有這個代碼。
public static void FormatDate(MaskedTextBox c) {
c.DataBindings[0].Format += new ConvertEventHandler(Date_Format);
c.DataBindings[0].Parse += new ConvertEventHandler(Date_Parse);
}
private static void Date_Format(object sender, ConvertEventArgs e) {
if (e.Value == null)
e.Value = "";
else
e.Value = ((DateTime)e.Value).ToString("MM/dd/yyyy");
}
static void Date_Parse(object sender, ConvertEventArgs e) {
if (e.Value.ToString() == "//")
e.Value = null;
}
這應該工作:
private void Form1_Load(object sender, EventArgs e)
{
maskedTextBox1.Mask = "00/00/0000";
maskedTextBox1.ValidatingType = typeof(System.DateTime);
maskedTextBox1.TypeValidationCompleted += new TypeValidationEventHandler
(maskedTextBox1_TypeValidationCompleted);
}
private void TypeValidationCompletedHandler(object sender, TypeValidationEventArgs e)
{
e.Cancel = !e.IsValidInput &&
this.maskedTextBox1.MaskedTextProvider.AssignedEditPositionCount == 0;
}
試驗這個,我終於找到了一個更簡單的解決方案。
STEP 1:
搜索是結合您的MaskedTextBox中的線(我的是所謂的 「mTFecha」)在您的Form.Designer.cs。即:
// mTFecha
//
this.mTFecha.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.listaAnimalesOfertadosBindingSource, "F_peso", true);
第2步:
應用小黑客:
this.mTFecha.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.listaAnimalesOfertadosBindingSource, "F_peso", true, System.Windows.Forms.DataSourceUpdateMode.OnValidation, "//"));
你就大功告成了!
我用這個與maskedtextbox
爲datetime
型
this.txtDateBrth.DataBindings.Add("Text", bsAgent, "DateBrth", true, DataSourceUpdateMode.OnPropertyChanged, null, "dd/MM/yyyy");
如果需要null
日期值,使用類聲明爲空的日期時間類型:
private DateTime? _DateBrth;
public DateTime? DateBrth
{
get { return _DateBrth; }
set { _DateBrth = value; }
}
你可以簡單地給日期格式如下:
maskTextBox1.DataBindings.Add("Text", bs, "SummitDate1", true, DataSourceUpdateMode.OnPropertyChanged, null, "dd/MM/yyyy");
這似乎使情況變得更糟。現在即使文本框中已經存在null,它也不會驗證。如果它開始爲空,它將工作正常,它只有在有一個空白的日期時才起作用。 – 2009-06-12 13:20:50