我编写了一个包含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;
可以正确填充组合框,但只要组合框被鼠标悬停,就会出现前面提到的错误。
答案 0 :(得分:0)
如果您使用Properties.Settings.validTransferTypes作为字符串,则该组合框的值将只是单个字符串值。您希望在组合框中填充组合框的值是否更多?似乎错误即将发生,因为你没有别的组合框来读取你正在加载的单个字符串。尝试使用Properties.Settings.Default加载数组可能是一个选项,然后将数据源设置为等于阵列。