4

ここで、コンボボックスのスタイルが視覚的にのみDropDownList変更されるという奇妙な問題が発生しています。コンボボックスDropDownのプロパティを確認すると、その設定が に表示されます。DropDownStyleDropDownList

基本的にここに私がやっていることがあります:

void InitComponents()
{
            ddlInterval.DrawMode = DrawMode.OwnerDrawFixed;
            ddlInterval.DrawItem += new DrawItemEventHandler(DrawIntervalItems);
            List<IntervalItem> backupIntervalsList = new List<IntervalItem>();
            IntervalsList.Add(new IntervalItem(5, GetIntervalString(5)));
            IntervalsList.Add(new IntervalItem(15, GetIntervalString(15)));
            IntervalsList.Add(new IntervalItem(30, GetIntervalString(30)));
            IntervalsList.Add(new IntervalItem(60, GetIntervalString(60)));
            IntervalsList.Add(new IntervalItem(120, GetIntervalString(120)));
            IntervalsList.Add(new IntervalItem(240, GetIntervalString(240)));
            IntervalsList.Add(new IntervalItem(480, GetIntervalString(480)));
            IntervalsList.Add(new IntervalItem(720, GetIntervalString(720)));
            IntervalsList.Add(new IntervalItem(1440, GetIntervalString(1440)));
            ddlInterval.DataSource = IntervalsList;
            ddlInterval.DisplayMember = "Name";
            ddlInterval.ValueMember = "Value";
}

 void DrawIntervalItems(object sender, DrawItemEventArgs e)
        {
            if(_bDisableItems)
            {
                switch (e.Index)
                {
                    case 5:
                    case 7:
                    case 8:
                        {
                            string s = ddlInterval.GetItemText(ddlInterval.Items[e.Index]);
                            e.DrawBackground();
                            e.Graphics.DrawString(s, ddlInterval.Font, Brushes.Black, e.Bounds);
                        }
                        break;
                    default:
                        {

                            string s = ddlInterval.GetItemText(ddlInterval.Items[e.Index]);
                            e.Graphics.FillRectangle(SystemBrushes.Window, e.Bounds);
                            e.Graphics.DrawString(s, ddlInterval.Font, Brushes.LightSlateGray, e.Bounds);
                        }
                        break;
                }
            }
        }

これは、2 つのコンボボックスの違いを示す画像です。両方のセットが にDropDownStyle設定されてDropDownListいますが、一番下の 1 つだけがアイテムを手動で描画していることに注意してください。

コンボボックスの違い

この問題を克服する方法はありますか?

4

1 に答える 1

0

このコードを試してください:

 ddlInterval.DrawMode = DrawMode.Normal;

それ以外の:

 ddlInterval.DrawMode = DrawMode.OwnerDrawFixed;
于 2013-05-07T09:06:49.280 に答える