1

ondraw イベントを発生させる方法 シナリオ: フォームで onDrawItem を持つカスタム コンボボックスを使用しています。ドローアイテムはこんな感じ

 protected override void OnDrawItem(DrawItemEventArgs e)
        {...

        }
Question: How do I make the custom combobox ComboLineStyle redraw 

selectedindex 自体が別の cmbBoxLineColor に変更されました。最終的に、 selectedindex changed ごとにコンボボックスのすべての行を再描画する方法が必要です。

 private void cmbBoxLineColor_SelectedIndexChanged(object sender, EventArgs e)
        {
Here I want the custom combobox-ComboLineStyle  control to redraw itself 


}

EDIT別のlinecolorcomboの色が変更されたときにドロップダウンを再度描画する必要があります.Color

 lineColorSel = cmbBoxLineColor.SelectedValue;
ComboBoxItemLineStyle itemSolid = new ComboBoxItemLineStyle ("Solid Line", lineColorSel);  

私の linestylecomboboxitem の color プロパティには、linecolor コンボの選択された値が含まれます。したがって、線種のコンボはそれ自体を更新/無効化し、この lineColorSel で再描画する必要があります。

ありがとう

4

1 に答える 1

0

System.Windows.Forms.Control を継承するものに対して Invalidate() を呼び出して、強制的に再描画することができます

選択したアイテムのカスタム ドローを行う方法の例を次に示します。

    protected override void OnDrawItem(DrawItemEventArgs e)
    {

        if (e.State == DrawItemState.Selected)
        {
            ...
        }
        else
        {
            ...
        }

        //or you could do it like this
        //if(e.Index == this.SelectedIndex)
        //{
        //}

        ...

    }

    protected override void OnSelectedIndexChanged(EventArgs e)
    {
        base.OnSelectedIndexChanged(e);
        base.Invalidate();
    }
于 2012-06-06T19:43:48.797 に答える