C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Control.DataBindings プロパティの使い方


(過去ログ 101 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■60455 / inTopicNo.1)  Control.DataBindings プロパティの使い方
  
□投稿者/ Ruku (1回)-(2011/07/04(Mon) 19:57:12)

分類:[C#] 

環境

WindowsXP
.NET Framework 4


コントロールの DataBindings プロパティについて質問します。


3つのコントロールに対して一つのクラスをバインドし、DataSourceUpdateMode.Never に設定しています。
各々のコントルールに対して編集後、WriteValue() メソッドを呼んで更新しようと考えました。

以下がソースです。

public class Sample
{
    public bool Prop1 { get; set; }
    public string Prop2 { get; set; }
    public string Prop3 { get; set; }
}

フォームにはチェックボックス、テキストボックス、コンボボックスを編集用に配置。
また、ボタンを配置してクリック時に WriteValue() メソッドを実行するテストをしています。

public partial class Form1 : Form
{
    private Sample _sample = new Sample();

    public Form1()
    {
        InitializeComponent();

        checkBox1.DataBindings.Add("Checked", _sample, "Prop1", true, DataSourceUpdateMode.Never);
        textBox1.DataBindings.Add("Text", _sample, "Prop2", true, DataSourceUpdateMode.Never);
        comboBox1.DataBindings.Add("SelectedItem", _sample, "Prop3", true, DataSourceUpdateMode.Never);

        comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
        comboBox1.DataSource = new[] { "A", "B", "C" };
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Debug.WriteLine(_sample.Prop1.ToString());
        Debug.WriteLine(_sample.Prop2);
        Debug.WriteLine(_sample.Prop3);

        checkBox1.DataBindings["Checked"].WriteValue();
        textBox1.DataBindings["Text"].WriteValue();
        comboBox1.DataBindings["SelectedItem"].WriteValue();

        Debug.WriteLine(_sample.Prop1.ToString());
        Debug.WriteLine(_sample.Prop2);
        Debug.WriteLine(_sample.Prop3);
    }
}

上記のソースの場合、

CheckBox は正しく更新され、Prop1 に反映される。
TextBox は空になり、Prop2 も空のまま。(初期値 null が "" にはなっている)
ComboBox は一度目だけ更新され、Prop3 に反映される。二度目以降は更新されない。

という動きになってしまいます。
(NullValue プロパティや DataSourceNullValue プロパティを設定してみても変わりませんでした)
(INotifyPropertyChanging, INotifyPropertyChanged など実装してみたりしましたが変わらずです)


何か使い方を間違っているでしょうか。
プロパティの指定などが足りないでしょうか。
それとも、同じインスタンスを複数コントロールにバインドした場合はこうなるものでしょうか。

よろしくお願いします。

# 何故かフォントが小さくなる...?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -