我编写了一个包含 DataGridView 的 GUI 应用程序,用户可以在其中Arrow
通过在视图中创建新行并填写新Arrow
的属性来添加类的新实例。其中一个属性被调用transferType
并且是一个字符串。
我允许用户transferType
在设置表单中设置有效 s 的列表。我Properties.Settings
用来保存设置,使用 Visual Studio 中内置的修道院工具来创建和管理应用程序设置。
我没有让用户transferType
手动输入该字段并让 DataGridView 拒绝该条目,如果它与任何有效的 s 不匹配transferTypes
,我一直在尝试设置 DataGridView 的列以使用填充有有效选项的下拉菜单. 为此,我使用 Visual Studios GUI 设计工具(用于构建 GUI)编辑了列并将“列类型”DataGridViewTextBoxColumn
从DataGridViewComboBoxColumn
. 该更改允许我选择一个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 不允许我创建DataSource
using Properties
. 任何帮助,将不胜感激。
(这也是我第一次发布的问题,所以请对批评保持温和:))
更新:事实证明 using((DataGridViewComboBoxColumn)arrowView.Columns[3]).DataSource = Properties.Settings.Default.validTransferTypes;
确实正确填充了组合框,但是只要将鼠标悬停在组合框上,就会出现前面提到的错误。