【发布时间】:2020-07-08 19:44:21
【问题描述】:
我有一个表单,它在它的构造函数中接收一个对象,并从该对象的属性中填充表单上的控件。我遇到了一个问题,我无法设置 ComboBox 的 SelectedText 属性,或者至少它没有按照我的预期工作。
public Form(ValueHoldingObject obj)
{
// yeah I know this is not a very clean way to populate the combobox, the issue
// isn't limited to the combobox so I don't think this is relevant
List<int> items = Repo.GetAllItems().Reverse();
foreach (int id in checkInPrizeIds.Take(100))
// Insert at beginning to put more recently used items at the top
combobox.Items.Insert(0, id);
combobox.DropDownHeight = 200;
combobox.SelectedText = obj.StringProperty;
}
当我测试这个表单时,组合框的文本没有被填充。如果我在我分配文本的行上添加一个断点,它确实被分配,所以一些事件正在触发(可能是多个焦点更改事件)并使其按我想要的方式工作。显然我不能在生产代码中使用断点作为修复。我是否错误地分配了这个值?我应该使用不同的方法来填充这些值吗?
进一步的测试表明它不仅仅是组合框,如果我有断点,我的所有控件都会正确填充。
【问题讨论】:
-
ComboBox.SelectedValue is null in the Form's constructor。您还可以将代码移到其他地方(处理创建句柄后生成的事件)。
-
@JacobHuckins 请创建一个新问题,而不是完全更改标题和内容,尤其是在获得原始问题的答案之后。
-
@OlivierRogier 我正在尝试删除它,但它不会让我因为你回答了它。我正在标记它,以便模组可以删除它。
-
@JacobHuckins 不要删除,答案可能对其他人有所帮助。请创建一个新的。如果需要,系统和版主可以在某一天删除它。
-
@OlivierRogier 不知道您可以回顾历史并像那样还原它。收回标志。