C#-组合框性能

C#-组合框性能,c#,.net,combobox,C#,.net,Combobox,因为我只是在用.NET学习C#(我对XNA框架有更多的经验),所以我可能没有正确地使用它 我的问题在我看来很奇怪。我使用设计器制作了一个包含TabControl的表单。在其中一个选项卡页面中,我有一个列表框和一个组合框。ComboBox具有静态数量的项,这些项都是在ComboBox初始化时声明的 每当我点击组合框查看它的内容列表(大约30个),并向下或向上滚动时,我的整个应用程序的性能会在大约一秒钟内下降很多。这使得我的组合框像糖浆一样慢,最重要的是它似乎击中了我的列表框,因为它在一秒钟内变成白

因为我只是在用.NET学习C#(我对XNA框架有更多的经验),所以我可能没有正确地使用它

我的问题在我看来很奇怪。我使用设计器制作了一个包含TabControl的表单。在其中一个选项卡页面中,我有一个列表框和一个组合框。ComboBox具有静态数量的项,这些项都是在ComboBox初始化时声明的

每当我点击组合框查看它的内容列表(大约30个),并向下或向上滚动时,我的整个应用程序的性能会在大约一秒钟内下降很多。这使得我的组合框像糖浆一样慢,最重要的是它似乎击中了我的列表框,因为它在一秒钟内变成白色,好像在等待重画

现在,我没有使用ComboBox编写任何循环或其他繁重的处理,所有内容都是由VisualStudio 2008自动编写的,是标准模板代码+框中的项目

编辑:正如我所说,唯一的代码是由VS2008生成的,我没有附加到组合框的方法(一个空的方法除外)。但代码如下:

// 
// comboBox1
// 
this.comboBox1.DropDownHeight = 200;
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.FormattingEnabled = true;
this.comboBox1.IntegralHeight = false;
this.comboBox1.Items.AddRange(new object[] {
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
"N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z"});
this.comboBox1.Location = new System.Drawing.Point(26, 362);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(101, 21);
this.comboBox1.TabIndex = 8;
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);

有人能分享关于这里发生的事情的见解吗?

好的,所以我发现了它是什么,实际上有点尴尬。我的应用程序正在使用一个钩子,但钩子始终处于启动和运行状态,即使不需要。那里的一些重组和问题应该得到解决。可能也需要看看这个钩子,因为它从一开始就不是我的来源


感谢你的回答:)

好的,所以我发现了那是什么,实际上有点尴尬。我的应用程序正在使用一个钩子,但钩子始终处于启动和运行状态,即使不需要。那里的一些重组和问题应该得到解决。可能也需要看看这个钩子,因为它从一开始就不是我的来源


感谢你的回答:)

看看这篇文章,它解决了一个类似的问题


看看这篇文章,它解决了一个类似的问题


组合框中是否附加了任何事件?您可以发布一些代码吗?您发布的代码应该可以正常工作——通常组合框不会受到您描述的影响。如果创建一个新的C#项目,只包含这个组合框,那么性能是否仍然很差?不,不是。回答如下:)你有任何附加到组合框的事件吗?您可以发布一些代码吗?您发布的代码应该可以正常工作——通常组合框不会受到您描述的影响。如果创建一个新的C#项目,只包含这个组合框,那么性能是否仍然很差?不,不是。在下面给出了答案:)