0

このスレッドの情報を使用して、datagridviewcomboboxolumn にオプションを設定して動的に設定しようとしました。デバッガーにエラーは表示されませんが、コンボボックスがレンダリングされません。

//setup combobox
List<combo_automation_option> combo = new List<combo_automation_option>();
combo.Add(new combo_automation_option { id = "0", value = "None" });
combo.Add(new combo_automation_option { id = "*.0.5", value = "Once every 5 minutes" });

dgv_col_automation.HeaderText = "Automation";
dgv_col_automation.Name = "dgv_jobs_col_automation";
dgv_col_automation.FlatStyle = FlatStyle.Flat;
dgv_col_automation.DataSource = combo;
dgv_col_automation.ValueMember = "id";
dgv_col_automation.DataPropertyName = "value";

jobs_datagrid.Columns.Add(dgv_col_automation); 

以下の設定を使用してコンボボックスをセットアップすると、うまく表示されました。

//setup combobox                        
dt_col_automation.HeaderText = "Automation";
dt_col_automation.Name = "dgv_jobs_col_automation";
dt_col_automation.Items.AddRange(
        "Once every 5 minutes",
        "Once every 10 minutes",
        "Once every 15 minutes",
        "Once every 30 minutes",
        "Once every hour",
        "Once every 2 hours",
        "Once every 3 hours",
        "Once every 4 hours",
        "Once every 5 hours",
        "Once every 6 hours",
        "Once every 7 hours",
        "Once every 8 hours",
        "Once every 9 hours",
        "Once every 10 hours",
        "Once every 11 hours",
        "Once every 12 hours",
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "10",
        "11",
        "12",
        "13",
        "14",
        "15",
        "16",
        "17",
        "18",
        "19",
        "20",
        "21",
        "22",
        "23",
        "24"
    );

私は次のようなパブリック構造体を持っています:

public struct combo_automation_option { 
   public string id;
   public string value;
}

何かアドバイス?

4

1 に答える 1

2

クラス/構造体フィールドが public であっても、データ バインディングは機能しません。

代わりにプロパティを使用する必要があります。

public struct combo_automation_option { 
   public string id {get; set;}
   public string value {get; set;}
}

さらに、コンボボックスに ID の代わりに何か (値など) を表示したい場合は、DisplayMemberプロパティも設定します。

ところで、他のいくつかの提案:

  • 構造体は、本当に必要な場合にのみ使用してください。代わりにクラスを使用する
  • 通常の c# 命名規則に従っていません。つまり、常にキャメル ケーシング (アンダースコアなし) であり、構造体/クラス、メソッド、プロパティのみが大文字で始まる必要があります。
于 2012-01-04T20:30:36.827 に答える