没有表单父级时,Winforms ComboBox无法设置SelectedIndex

时间:2019-03-30 20:12:59

标签: c# winforms combobox parent

我对Windows窗体有一个奇怪的问题,我不知道如何解决。

问题是,我想动态创建一个其中包含某些组件的GroupBox,尤其是使用ComboBox。它正在工作,但是当我想设置ComboBox的SelectedIndex时,抛出ArgumentOutOfRange。我已使用Datasource属性将选项设置为ComboBox。我已经发现,如果我首先设置GroupBox的父级,但只有将其设置为Form时,该问题才能解决。

总而言之,ComboBox不能在没有视觉外观之前设置SelectedIndex

public partial class Form1 : Form
{
    enum Example
    {
        One,
        Two,
        Three
    }

    ComboBox cb;
    GroupBox gb;

    public Form1()
    {
        InitializeComponent();
        gb = new GroupBox()
        {
            //Parent = this,
            Text = "Try",
            AutoSize = true,
            AutoSizeMode = AutoSizeMode.GrowOnly
        };
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        cb = new ComboBox()
        {
            Parent = gb,
            Top = 15,
            Left = 5,
            DataSource = Enum.GetValues(typeof(Example)),
            SelectedIndex = 1
        };
    }
}

我已经编写了具有相同问题的示例代码。如果我在创建GroupBox时注释掉Parent = this,则会引发异常,但是如果我将其重新插入代码中,它将正常工作。

如何在ComboBox SelectedIndex出现之前设置它?预先感谢!

0 个答案:

没有答案