0

私はこの解決策を読みました:リストボックスの項目テキストを更新するにはどうすればよいですか?

しかし、オブジェクトのプロパティが変更されたときに listBox に表示されるテキストを更新することができません。

public partial class Form1 : Form
{
    public BindingList<Channel> chanList = new BindingList<Channel>();

    private void Form1_Load(object sender, EventArgs e)
    {
        lbChannels.DisplayMember = "Display";
        lbChannels.DataSource = chanList;
    }

} 


public class Channel
{
    public string Display
    {
        get
        {
            return ToString();
        }
    }

    public override string ToString()
    {
        if(!unread || DateTime.Now.Second % 2 == 0)
            return Name;
        return "";
    }
}

ここでの目標は、listBox に未読のデータがある場合にチャンネル名を点滅させることですが、テストしても何も起こりません。また、lbChannels.Refresh() と lbChannels.Update() を呼び出してみました。

何かが欠けているに違いないのですが、何がわかりません。他のスレッドの解決策は単純すぎて真実ではないように思えますが、私はそれを何度か調べましたが、listBox に関連するものは他に見つかりません。ここで何が欠けていますか?

4

1 に答える 1

0

コードは、指定したリンクに既に記述されています。同じ方法で実行してください。更新の例を次に示します。

private void btnUpdate_Click(object sender, EventArgs e)
        {
            Employee selectedEmployee = (Employee)lstEmployees.SelectedItem;
            selectedEmployee.Name = "Joseph";
            if (selectedEmployee != null)
            {
                _employees[selectedEmployee.Id] =selectedEmployee;
            }
        }

秒単位の時間が偶数の場合に機能するオーバーライドされたToStringメソッドを使用するDisplay関数にバインドしないでください。これは意味がありません。

于 2012-05-20T02:51:29.973 に答える