我在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
答案 0 :(得分:3)
您在SelectedIndexChanged
事件的处理程序中添加项目。您需要将代码移至InitializeComponent
或其他适当位置。
答案 1 :(得分:1)
请检查以下事项:
答案 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 } }