2012-10-05 115 views
0

我在我的應用程序中有一個類。它一定會winform文本框控件。但綁定到BookingNo屬性的文本框始終顯示零(0)。但我希望文本框保持空白。有什麼辦法可以做到嗎?這是我的代碼片段。想要避免默認零值

public class Booking 
    { 
    private int pBookingNo; 
    private string pCustomerName; 
    private string pAddress; 

    public int BookingNo 
    { 
     get { return pBookingNo; } 
     set 
     { 
      if (!value.Equals(pBookingNo)) 
      { 
       pBookingNo = value; 
      } 
     } 
    } 

    public string CustomerName 
    { 
     get { return pCustomerName; } 
     set 
     { 
      if (!value.Equals(pCustomerName)) 
      { 
       pCustomerName = value; 

      } 
     } 
    } 

    public Booking() { } 
} 


    public partial class Form1 : Form 
    { 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     AddDataBindings(); 
    } 

    private void AddDataBindings() 
    { 
     bsBooking.DataSource = typeof(Booking); 

     txtBookingNo.DataBindings.Add("Text", bsBooking, "BookingNo", true, DataSourceUpdateMode.OnPropertyChanged, null, "G", GlobalVariables.CurrentCultureInfo); 
     txtCustomerName.DataBindings.Add("Text", bsBooking, "CustomerName"); 

    } 
} 
+0

怎麼玩'control.Properties.Mask'或'control.Properties.DisplayFormat'? –

回答

2

您可以使用自定義格式bi通過向Format事件添加處理程序(http://msdn.microsoft.com/en-us/library/system.windows.forms.binding.format.aspx)並在值爲零時返回空字符串。但是你不能分辨這個值是否真的是零,或者它還沒有被設置,在這種情況下使用int? @ Grumbler85建議的方法更好。

+0

int?方法簡單快捷。謝謝。 –

8

的整數的默認值是0,所以你必須把它包裝成一些其他的對象,它支持0以外的值,比如

public int? BookingNo { get; set; } 
+0

你的解釋更清楚。謝謝。 –

0

what's約:

textBox1.BindingContextChanged += new EventHandler(BindingContext_Changed); 




private void BindingContext_Changed(object sender, EventArgs e) 
{ 
    TextBox txtBox = (TextBox)sender; 
    if (txtBox.Text == "0"){ 
     txtBox.Text = ""; 
    } 
} 

鴕鳥政策知道,如果它的工作原理,只是一個想法。