使用Properties.Settings作为C#中的数据源(特别是对于DataGridViewComboBoxColumn)

时间:2012-07-18 14:40:05

标签: c# visual-studio datagridview datasource properties.settings

我编写了一个包含DataGridView的GUI应用程序,用户可以通过在视图中创建新行并填写新的Arrow属性来添加Arrow类的新实例。其中一个属性称为transferType,是一个字符串。

我允许用户在设置表单中设置有效transferType的列表。我使用Properties.Settings来保存设置,使用Visual Studio中内置的修复工具来创建和管理应用程序设置。

不是让用户手动输入transferType字段而让DataGridView拒绝该条目,如果它与任何有效的transferTypes都不匹配,我一直在尝试设置列DataGridView使用下拉菜单填充有效选项。为此,使用Visual Studios GUI设计工具(用于构建GUI),我编辑了列并将“列类型”从DataGridViewTextBoxColumn更改为DataGridViewComboBoxColumn。这个更改允许我选择一个DataSource来填充组合框的选择,所以我去“其他数据源”尝试选择存储我的设置的“属性”(Properties.Settings.Default),但是出于某种原因,Visual Studio不允许我选择它。

然后尝试在GUI初始化后在代码中设置组件框的DataSource,使用“((DataGridViewComboBoxColumn)arrowView.Columns[3]).DataSource = Properties.Settings.Default.validTransferTypes;”(传输类型是第四列),但是当我运行程序时当我点击组合框并尝试“放下它”时,我收到此错误:

DataGridVIew中发生以下异常: System.ArgumentException:DataGridViewComboBoxCell值无效。 要替换此默认对话框,请处理DataError事件。

错误循环并在点击确定或退出窗口后立即重新出现。

我假设必须有一种合理的方法来使用我的设置来填充组合框,但无法弄清楚如何。我也不明白为什么Visual Studio不允许我使用DataSource创建Properties。任何帮助将不胜感激。

(这也是我发布的第一个问题,所以请批评一下温柔:))

更新: 事实证明,使用((DataGridViewComboBoxColumn)arrowView.Columns[3]).DataSource = Properties.Settings.Default.validTransferTypes;可以正确填充组合框,但只要组合框被鼠标悬停,就会出现前面提到的错误。

1 个答案:

答案 0 :(得分:0)

如果您使用Properties.Settings.validTransferTypes作为字符串,则该组合框的值将只是单个字符串值。您希望在组合框中填充组合框的值是否更多?似乎错误即将发生,因为你没有别的组合框来读取你正在加载的单个字符串。尝试使用Properties.Settings.Default加载数组可能是一个选项,然后将数据源设置为等于阵列。