私はこのシナリオを持っている:私が欲しいものをにCheckedListBox
[Flags]
enum Colors : long
(
red = 1,
blue = 2,
green = 4,
yellow = 8,
)
DataTable dt = new DataTable();
dt.Columns.Add("PersonName", typeof(string));
dt.Columns.Add("CheckOption", typeof(bool));
dt.Columns.Add("Colors", typeof(long));
// note that the values in the Colors column are enumed values of chosen colors
dt.Rows.Add("Name 1", true, 1); // red
dt.Rows.Add("Name 2", true, 12); // green and yellow
dt.Rows.Add("Name 3", true, 4); // green
dt.Rows.Add("Name 4", false, 11); // red, blue and yellow
// bind the datatable to grid
DataGridView dgv = new DataGridView();
dgv.DataSource = dt;
// hide the colors in the grid
dgv.Columns["Colors"].Visible = false;
// checked list box has all items from the enum
CheckedListBox clb = new CheckedListBox();
string[] colorsArray = Enum.GetNames(typeof(Colors));
clb.Items.AddRange(colorsArray);
は何とか中にCheckedListBoxにデータテーブルの「色」の欄に選択した色のenumed値をバインドすることですいい方法。 それは可能ですか?
これまでのところ、私はグリッドのRowEnterイベントで遊んでいましたが、これは非常に脆弱で、全く素敵ではないようです。
EDIT:例えば 私はのMyTextと呼ばれるDataTableの4列目を持っていた場合、私は、このようなテキストボックスにその列をバインドすることができます:データグリッド内の行を介して値を移動するときに
myTextBox.DataBindings.Add("Text", dt, "MyText");
テキストボックスの自動化が変更され、テキストボックスへの更新はすべてデータテーブルに保存されます。 私はchecklistboxとenumsからこの機能を取得したいと思います。
私はどの色が選択されているかを知ることに問題はありません。私が欲しいのは、チェックされたリストボックスにそれらの値をバインドするので、データグリッドの行が選択されるたびにこの計算を行う必要はありません。 –
申し訳ありませんが、私はそれを行う方法を知らないでしょう。しかし、これらの値をバインドしようとしても、行が選択されるたびに再計算されます。それはちょっと抽象化されています。 –
ええ、私はする必要がありますね...私は簡単な方法を探していた:) –