问题标签 [ondrawitem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2841 浏览

winforms - 右对齐 TabControl 上的垂直文本

试图让 tabcontrol 的每个选项卡上的文本垂直显示。因为我从来没有涉足控制和什么不是,我有点卡住了。找到了一些代码来让文本显示为好像它向左旋转一样。我希望它显示为好像它在选项卡上向右(垂直)旋转。骨架代码如下:

0 投票
2 回答
9044 浏览

c# - 覆盖 ListBox 的 DrawItem - 未重绘的项目

这是一个 C# 桌面应用程序。DrawStylemy的属性ListBox设置为OwnerDrawFixed.

问题:我重写 DrawItem 以绘制不同字体的文本,并且它有效。但是当我在运行时开始调整表单大小时,所选项目被正确绘制,但其余部分没有重绘,导致未选项目的文本看起来损坏。

这是我的代码:

此外,正确绘制的项目(选定的项目)在调整表单大小时闪烁。没什么大不了,但如果有人知道为什么.... tnx

0 投票
1 回答
1407 浏览

winapi - 为什么我的所有者绘制列表框的DrawItem方法不能调用

我尝试用 WTL 编写一个所有者绘制列表框。我的代码看起来像这样

我还添加REFLECT_NOTIFICATIONS了父消息循环,并在属性表中将 Owner Draw 设置为 Fixed。但是我还是收不到消息。然后我用spy++查看了listbox收到的消息,发现有些消息很奇怪(WM_USER+7211)。
我的操作系统是 WinXp 并使用 VS2008。

0 投票
2 回答
19137 浏览

vb.net - 如何使自定义 ComboBox (OwnerDrawFixed) 看起来像标准 ComboBox 的 3D?

我正在制作一个自定义 ComboBox,继承自 Winforms 的标准 ComboBox。对于我的自定义 ComboBox ,我设置DrawModeOwnerDrawFixedDropDownStyleDropDownList然后我写我自己的OnDrawItem方法。但我最终是这样的:

标准与自定义组合框

如何使我的自定义组合框看起来像标准组合框?


更新 1:按钮渲染器

在四处寻找之后,我找到了ButtonRenderer班级。它提供了一种DrawButton静态/共享方法——顾名思义——绘制正确的 3D 按钮。我现在正在试验它。


更新 2:什么覆盖了我的控制?

我尝试使用我能想到的各种对象的 Graphics 属性,但总是失败。最后,我尝试了表单的图形,显然有些东西正在覆盖我的按钮。

这是代码:

结果如下:

覆盖的 ButtonRenderer

替换Me.Parent.CreateGraphicse.Graphics我得到了这个:

剪辑按钮渲染器

做上面的+替换Me.ClientRectanglee.Bounds我得到了这个:

缩小按钮渲染器

谁能指出我必须为该方法使用的图形ButtonRenderer.DrawButton

PS:蓝色边框是由于我使用 PushButtonState.Default 而不是 PushButtonState.Normal


我找到了答案!(见下文)

0 投票
2 回答
3087 浏览

.net - 如何在 Combobox 中显示 FontFamily?

我有一个组合框,我需要用系统中所有可用的字体来填充它——它们的实际名称、样式等......

从我可以在网上找到的所有信息中,我能够将 DrawItem 事件放在一起,但我一直遇到以下错误,“无法调用非委托类型'System.Drawing.Font'”事实上,我借用了每行来自其他网站的线路并进行了一些更改。所以,我认为它应该有效。

以下是我在 ComboBox 中填充项目列表的方式:

这是 combobox4 drawitem 事件:

更新: 我修改了导致错误的行,它现在编译没有错误,但正如我在评论中所说,它没有以自己的样式和大小绘制字体。

更新:我忘记将 DrawMode 设置为 OwnerDrawFixed。现在它正在调用我的 DrawItem 事件,但仍未以自己的样式和大小绘制字体。

我希望组合框看起来像下图:

别人的组合框

不像我下面的:

带有组合框的 winform 的实际图像

0 投票
1 回答
2829 浏览

c++ - MFC ComboBox DrawItem 问题

我正在编写一个 DrawItem 覆盖方法来修改应用程序,因此 ComboBox DropDowns 中的文本都使用 pDC->DrawText 函数将 DT_SINGLELINE|DT_VCENTER 解析为最终参数居中。我目前遇到的问题是我可以在 DropDown 中重复第一个值,但我想要在 DropDown 中显示的所有值的列表。

我不确定这里是否存在与应用程序中的其他控件一样的基本缺陷,例如在调用 DrawItem 覆盖时似乎填充了 ListCtr lpDrawItemStruct->itemData。但是对于 ComboBox lpDrawItemStruct->itemData 的情况,它显示为空。

请问有人可以帮忙吗?以下是到目前为止的代码。

0 投票
1 回答
2318 浏览

c# - 我的组合框上的 OwnerDraw DrawItem 事件也更改了 Text 属性值

我的问题基本上是,在 WinForms 中为我的 ComboBox 实现 DrawItem,更改我的 Text 属性,为什么我可以停止它?

因为我的 OwnerDraw 事件完美运行,除了 Text 属性“也”被设置为与 Items[] 中的所有项目相同的逻辑(即在下面的 DrawItem 事件中实现)

就上下文而言,我在列表中显示了 URL,但有些太长了,我基本上将它们切掉并将文本“...”放在最后 - 使其更具可读性。我设置了 DataSource,以便它呈现我的类“DisplayUrl”的一个属性,但使用另一个“Url”作为实际值。(下面的MyUrl)

在一些代码的末尾,我明确设置 cmbUrl.Text = "THE FULL TEXT"

但不知何故,DrawItem 事件也影响了“Text”属性,因为即使在运行此代码之后,一旦 DrawItem 事件完成,我的 Text 属性设置为与 Item[0] 相同。即文本被剪掉 - 如“完整的......”

0 投票
2 回答
3995 浏览

winforms - 我可以将 DrawItem 事件处理程序与 CheckedListBox 一起使用吗?

我想覆盖将项目添加到选中列表框时显示的文本。现在它正在使用 obj.ToString(),但我想附加一些文本,而不更改对象的 ToString 方法。我已经看到了处理 ListBox 的 DrawItem 事件的示例,但是当我尝试实现它们时,我的事件处理程序没有被调用。我注意到 Winforms 设计器似乎不允许我为 DrawItem 事件分配处理程序。固执己见,我只是自己加了代码

我在尝试做不可能的事吗?

0 投票
0 回答
862 浏览

c# - 覆盖 OnDrawItem (CheckedListBox)

我对自定义 CheckedListBox 类有疑问。我有使用自定义 ComboBox 类和覆盖 OnDrawItem 的代码(包括图片)。我的目标是更改外观,以便项目出现在 CheckedListBox 类中(也具有覆盖,包括图片)而不是自定义 ComboBox。问题是图片显示不正确:直到我单击该项目并按住鼠标或滚动列表框之前它们根本不显示...此外,即使在我在代码中取消选中它们之后,选中的项目仍保持选中状态运行时(仅在视觉上,逻辑上它们都可以)。知道发生了什么吗?

}

0 投票
1 回答
1373 浏览

mfc - MFC上的CMenu边框颜色

我有一个继承自 CMenu Owner 绘制菜单的类

使用此类,Menu 会正确显示,但是,例如,当您打开菜单 FILE 时,您将看到标准菜单颜色的边框和分隔符

我怎样才能画出所需颜色的这一部分?

在图像下方,您可以看到具有选定颜色(绿色)的文件子菜单和边框/间隔上的标准窗口菜单灰色

在此处输入图像描述