PathItem のセットを含むリスト ボックスがあります。ユーザーの好みに応じて、いくつかの異なるケースで ToString メソッドをオーバーライドしました。
これは基本的に、カスタム オブジェクトに含まれるファイル名のリストです。
class PathItem
{
public static bool show_ext { get; set; }
public static bool use_full_path { get; set; }
public string filepath { get; set; }
public override string ToString()
{
if (use_full_path)
return filepath;
else if (show_ext)
return Path.GetFileName(filepath);
else
return Path.GetFileNameWithoutExtension(filepath);
}
}
GUI には 2 つのチェックボックスがあります。1 つのチェックボックスにはファイル拡張子が表示され、別のチェックボックスにはファイルの絶対パスが表示されます。これらのいずれかをチェックすると、上記で定義された静的変数が更新されます。
チェックボックスを選択するたびに、ユーザーの選択を反映するようにリストボックスを更新したいと思います。
解決策は、ToString メソッドを再度呼び出して各項目の新しい値を取得することにより、リストボックスのすべての項目を更新することだと思いますが、これがどのように行われるかはわかりません。
また、これが本当かどうかはわかりませんが、
PathItem.show_ext = true;
PathItem
これはすべての既存のオブジェクトに適用されますか?
アップデート:
提案された方法を試した後Refresh
、チェックボックスがチェックされていてもリストボックス内の文字列は更新されませんでした (ClickChanged で Refresh 呼び出しを開始します)。メソッド内に print ステートメントを書きましたToString
が、更新時にメッセージが出力されませんでした。
リスト ボックスでカスタム オブジェクトを使用しているためかどうかはわかりません。
これは、リストボックスにアイテムを追加する方法です
foreach (string filename in files)
listBox1.Items.Add(new PathItem { filepath = filename });