我的应用程序中有一个类。它必将赢得文本框控件。但是绑定到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 :(得分:8)
Integer的默认值为0,因此您必须将其包装到其他对象中,该对象支持0以外的值,例如
public int? BookingNo { get; set; }
答案 1 :(得分:4)
您可以使用Nullable Type
public int? pBookingNo
{
get;
set;
}
链接:http://msdn.microsoft.com/fr-fr/library/1t3y8s4s(v=vs.80).aspx
答案 2 :(得分:2)
您可以通过向Format事件(http://msdn.microsoft.com/en-us/library/system.windows.forms.binding.format.aspx)添加处理程序来为绑定使用自定义格式,并返回值为零时为空字符串。但是您无法判断该值是否实际为零或者它是否已经设置,在这种情况下使用int? @ Grumbler85建议的方法更好。
答案 3 :(得分: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 = "";
}
}
不知道它是否有效,只是一个想法。