C# ComboBox.DropDownWidth属性仅在显示第二个表单时生效
我有一个简单的C# ComboBox.DropDownWidth属性仅在显示第二个表单时生效,c#,winforms,combobox,imagelist,C#,Winforms,Combobox,Imagelist,我有一个简单的FixedToolWindow表单,它有一个组合框。我已将DropDownWidth属性设置为53。我还使用图像列表中的图像填充组合框 当我第一次使用首选项form.ShowDialog()打开表单时,下拉列表的宽度大于53,如下所示: 当我关闭表单并使用首选项form.ShowDialog()重新打开时,这是我在重新启动调试之前得到的理想结果: 这是我的首选表格课程: public partial class PreferencesForm : Form { priv
FixedToolWindow
表单,它有一个组合框
。我已将DropDownWidth
属性设置为53。我还使用图像列表中的图像填充组合框
当我第一次使用首选项form.ShowDialog()
打开表单时,下拉列表的宽度大于53,如下所示:
当我关闭表单并使用首选项form.ShowDialog()
重新打开时,这是我在重新启动调试之前得到的理想结果:
这是我的首选表格课程:
public partial class PreferencesForm : Form
{
private Form1 MainForm;
public TabControl TabControl { get; set; }
public PreferencesForm(Form1 mainForm)
{
MainForm = mainForm;
InitializeComponent();
}
private void PreferencesForm_Shown(object sender, EventArgs e)
{
comboBox1.SelectedIndex = Preferences.ColorIndex;
}
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle();
if (e.Index > -1 && imageList1.Images.Count >= e.Index)
e.Graphics.DrawImage(imageList1.Images[e.Index], new PointF(e.Bounds.X, e.Bounds.Y));
}
}
这是我的Form1课程:
public partial class Form1 : Form
{
private PreferencesForm PreferencesForm;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
PreferencesForm = new PreferencesForm(this);
}
private void preferencesToolStripMenuItem_Click(object sender, EventArgs e)
{
PreferencesForm.ShowDialog();
}
}
编辑:我已经能够将问题缩小到直接原因。
当我在组合框中更改ItemHeight时,问题就出现了。
默认情况下(15),此问题不会发生
奇怪的是,当我将ItemHeight设置为任何值(包括15!)时,就会出现问题。
因此,当ItemHeight在属性页面中显示为粗体时,就会出现所述问题,但当我右键单击“重置”时,ItemHeight变为灰色15,则没有问题。
其他人能复制这个吗?
组合框的绘图模式为DrawOwnerVariable
任何帮助都将不胜感激。我真是莫名其妙 尝试以所示的形式移动初始SelectedIndex的设置,即使我尝试了,但结果与以前一样。这不会重现问题。请发布一个。因此,我已重新创建了该项目,并且该问题未被复制。我现在要努力找出问题的原因。好的,我已经找到了问题的直接原因。我已将项目高度设置为32(图像的高度)。这导致问题重复。我找到了解决方案!确保属性菜单中的ItemHeight为灰色(右键单击“重置”)。然后以所示的形式设置ComboBox.ItemHeight=32;