C#中的组合框没有填充

时间:2009-07-24 15:17:09

标签: c# data-binding combobox

我在C#中有一个Windows窗体应用程序。平台是vS 2005。

以下是一段代码:

namespace HostApp
{
    public partial class Form1 : Form
    {
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {            
            comboBox2.Items.Add("Apples");
            comboBox2.Items.Add("Oranges");
            comboBox2.Items.Add("Grapefruits");
        }
    }
}

我运行应用程序,但水果名称没有显示在comboBox2的下拉列表中。我确信我错过了一些代码行,用输入的值“填充”下拉列表。 任何帮助将不胜感激。

谢谢, Viren

6 个答案:

答案 0 :(得分:3)

您在SelectedIndexChanged事件的处理程序中添加项目。您需要将代码移至InitializeComponent或其他适当位置。

答案 1 :(得分:1)

请检查以下事项:

  1. 您在组合框中添加了AutoPostBack =“true”,以便触发selectedChange事件并发回。
  2. 确保您没有在页面加载中刷新组合框。您可以使用IsPostBack来实现值的加载。

答案 2 :(得分:1)

更改所选项目时正在添加您的项目,但由于没有现有项目,因此不会发生这种情况。将这些行移动到Form1的构造函数,它将工作。

答案 3 :(得分:0)

将代码移至Page_Load事件...

SelectedIndexChanged仅在ComboBox索引更改且AutoPostBack = True时触发。

编辑:对不起,这是一个表格,我在想网...转到Form_Load

答案 4 :(得分:0)

您提供的代码只会在连接到comboBox2_SelectedIndexChanged的控件中选择更改时将项目添加到comboBox2。

这里有两个概念:控制初始化/数据绑定和事件处理。

您编写的代码基本上是“如果有人在组合框中选择了新内容,请将这3个选项添加到组合框中”。每次所选索引在组合框中更改时都会发生这种情况。当然,这假设您甚至将此事件处理程序连接到组合框以开始。这是事件处理。

您可能要做的是初始化控件。当您加载页面并想要设置页面控件中可用的初始选项时,会发生这种情况。使用Init或Load事件可能是您要在控件中设置选项的位置。这也是当您初始化事件处理程序以说“当事情发生时,执行此操作”。

答案 5 :(得分:0)

对于autopostback和viewstate有困难的人,请注意page_load事件。

如果在尝试谷歌时已经有很多这样的页面了,那么这就是我在这里发布的原因。

如果你在page_load方法中填写你的下拉列表(或任何其他控件),请务必写一个额外的控件是否有回发(在更改下拉列表的值时触发)。 如果您不进行该控制,您的控件将被重新填充。

这个错误花了我一段时间才弄明白。 所以我说的是


protected void Page_Load(object sender, EventArgs e)
{
      

if (!IsPostBack) { //fill your controls here } }