だから私はこれを持っていると私はそれが間違っている知っている:は、列オブジェクトにOnSelectionChangeCommitted DataGridViewComboBoxEditingControlからオーバーライド値を給餌
protected override void OnSelectionChangeCommitted(EventArgs e)
{
if (SelectedIndex == 0)
{
GENIO_Viewer.FullColourPaletteForm dlgColour = new GENIO_Viewer.FullColourPaletteForm();
if(dlgColour.ShowDialog() == DialogResult.OK)
{
bool bFound = false;
for(int i = 1; i < Items.Count; i++)
{
ComboboxColourItem ocbItem = (ComboboxColourItem)Items[i];
if(ocbItem.Index == dlgColour.iSelectedColour)
{
SelectedIndex = i;
bFound = true;
break;
// We can just select this one
}
}
if(!bFound)
{
// Add it
ComboboxColourItem ocbItem = ComboboxColourItem.Create((ushort)dlgColour.iSelectedColour);
Items.Add(ocbItem);
SelectedIndex = Items.Count - 1;
}
}
}
base.OnSelectionChangeCommitted(e);
}
このハンドラは、私のDataGridViewComboBoxEditingControl
の一部です。しかし、新しいItems
を追加するのは間違った場所です。
私はアイテムを追加する必要があるので、所有するColumn
にアクセスする方法を習得できません。それ以外の場合は例外が発生します。
しかし、私は、私は列オブジェクトを取得するために使用できるプロパティを参照することはできません。
編集コントロールからどのようにすればいいですか?
さらに、について説明:
リストコンボ項目は「列」オブジェクトによって追加されます。したがって、私たちは15色から選ぶことができます。今私はリストのトップにgenricの色を追加しました。
したがって、ユーザはedit、droplistの表示を呼び出し、アイテム0を選択します。これは前述のハンドラで傍受します。彼らはアイテム0を選んだので、異なる色を選択できるようにポップアップダイアログを表示します。
これを選択したら、列の項目の必須リストに追加するか、それを追加する必要があります。今は意味が分かりますか?
DataGridView Notifyオブジェクトを使用しようとしましたが、何らかの理由で使用可能な関数のリストに表示されません。
私はDataSourceを使用しません。私は、列のコンストラクタで、次のように移入:
private void InitialiseComboItems()
{
List<ushort> listColours = new List<ushort>();
listColours.Add(0);
listColours.Add(1);
listColours.Add(2);
listColours.Add(3);
listColours.Add(4);
listColours.Add(5);
listColours.Add(6);
listColours.Add(7);
listColours.Add(8);
listColours.Add(9);
listColours.Add(250);
listColours.Add(251);
listColours.Add(252);
listColours.Add(253);
listColours.Add(254);
listColours.Add(255);
this.Items.Clear();
foreach (ushort iColourIndex in listColours)
this.Items.Add(ComboboxColourItem.Create(iColourIndex));
}
私もヘルパーメソッドを持っています。
public ComboboxColourItem InsertColour(ushort iColourIndex)
{
ComboboxColourItem ocbItem = ComboboxColourItem.Create(iColourIndex);
bool bAppend = true;
if (Items.Count > 16)
{
// There are other colours, need to find right index
for(int i = 16; i < Items.Count; i++)
{
if(ocbItem.Index < ((ComboboxColourItem)Items[i]).Index)
{
bAppend = false;
Items.Insert(i, ocbItem);
break;
}
}
}
if (bAppend)
Items.Add(ocbItem);
return ocbItem;
}
どのように項目を列に追加しましたか? 'DataSource'プロパティを設定しますか? –