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

整数のデフォルト値は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 に答える