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");

    }
}
4

4 回答 4

8

Integer 的默认值为 0,因此您必须将其包装到其他对象中,该对象支持 0 以外的值,例如

public int? BookingNo { get; set; }
于 2012-10-05T13:58:01.127 回答
4

您可以使用Nullable Type

public int? pBookingNo
{
  get;
  set;
}

链接: http: //msdn.microsoft.com/fr-fr/library/1t3y8s4s (v=vs.80).aspx

于 2012-10-05T14:00:10.123 回答
2

您可以通过向 Format 事件 (http://msdn.microsoft.com/en-us/library/system.windows.forms.binding.format.aspx) 添加处理程序来为绑定使用自定义格式并返回一个空字符串当值为零时。但是您无法判断该值实际上是零还是尚未设置,在这种情况下使用 int? @Grumbler85 建议的方法更好。

于 2012-10-05T14:04:53.280 回答
0

关于:

  textBox1.BindingContextChanged += new EventHandler(BindingContext_Changed);




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

不知道有没有用,只是一个想法。

于 2012-10-05T14:07:01.220 回答