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 struct combo_automation_option { 
   public string id {get; set;}
   public string value {get; set;}
}

此外,如果您想在组合框中显示其他内容(例如值)而不是 id,请同时设置DisplayMember属性。

顺便说一句,其他一些建议:

  • 仅在确实需要时才应使用结构;改用类
  • 您没有遵循通常的 c# 命名约定,即:始终为驼峰式大小写(无下划线),并且只有结构/类、方法、属性必须以大写字母开头。
于 2012-01-04T20:30:36.827 回答