【发布时间】:2019-03-11 12:38:46
【问题描述】:
我到处搜索并尝试了我所知道的一切,但似乎无法找到摆脱 ComboBox 控件的 DropDown 弹出窗口中嵌入的 CS_DROPSHADOW 的方法。
这就是现在的样子:
这就是我想要的样子:
我怎样才能做到这一点?
更新: 我尝试了每种属性组合,但没有设法解决它。 现在如何设置:
DropDownStyle = DropDownList
FlatStyle = 扁平
DrawMode = OwnerDrawFixed
这就是 DrawItem 的实现方式:
if (sender is ComboBox cbx)
{
e.DrawBackground();
if (e.Index >= 0)
{
StringFormat sf = new StringFormat
{
LineAlignment = StringAlignment.Center + 1,
Alignment = StringAlignment.Center
};
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
e.Graphics.FillRectangle(new SolidBrush(Color.Gainsboro), e.Bounds);
else
e.Graphics.FillRectangle(new SolidBrush(cbx.BackColor), e.Bounds);
e.Graphics.DrawString(cbx.Items[e.Index].ToString(), cbx.Font, new SolidBrush(cbx.ForeColor), e.Bounds, sf);
}
}
【问题讨论】:
-
如果您将其设置为“平面”,则不应出现阴影
-
ListControl的类名是
ComboLBox... -
恕我直言 Winforms 旨在为所有应用程序提供一致的外观和感觉。这些细节真的无法改变。如果您需要对外观和感觉进行更多控制,您可能应该切换到 WPF 或创建您自己的完整用户控件,在所有情况下都可以自行绘制。
标签: c# winforms combobox dropdown dropshadow