1

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

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

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

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

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

点击 OK 或退出窗口后,错误会立即循环并重新出现。

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

(这也是我第一次发布的问题,所以请对批评保持温和:))

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

4

1 回答 1

0

如果您使用 Properties.Settings.validTransferTypes 作为字符串,那么该组合框的值将只是一个字符串值。您的设置中是否有更多想要填充组合框的值?似乎错误即将到来,因为除了要加载的单个字符串之外,您没有其他内容可供组合框读取。尝试使用 Properties.Settings.Default 加载数组可能是一个选项,然后将数据源设置为等于大批。

于 2012-07-19T14:03:29.947 回答