问题标签 [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.
c# - 仅当用户单击 ListBox 时才会触发 DrawItem 事件
我正在使用 VS 2015 在 C# 中编写客户端/服务器 WinForms 应用程序。
我有一个ListBox控件,它的DrawItem事件是所有者绘制的(是的,我将DrawMode属性设置为OwnerDrawFixed),每次收到新消息时都必须重新绘制它。
我在这个参考之后使用这个回调:
这是MeasureItem方法:
消息被接收并插入使用ListBox.Add()
,它确实有效,由调试器确认。
但是ListBox 仅在我单击它时才会重绘(我认为它会触发焦点)。
我已经尝试过了.Update()
,.Refresh()
但.Invalidate()
没有运气。
有没有办法DrawItem()
从代码触发?
winforms - Windows 窗体:手动绘制 ComboBox 的 SelectedItem
我有一个 ComboBox(更准确地说是 ToolStripCombobox),里面装满了KeyValuePair<Int32, FontFamily>
. 我设法通过使用 DrawItem 事件手动绘制了 Items。所以每一个Item都用对应KeyValuePair的FontFamily来绘制。这适用于 DropDownList,但是当我从列表中选择一个项目并且列表关闭时,ComboBox 中的文本会显示类似“[21,[FontFamily: Name=Arial]]”的内容,这很可能是SelectedItem.ToString()。
任何想法如何解决这个问题?
这是我的自定义 DrawItem 方法的代码:
更新:
当我将组合框的 DropDownStyle 设置为时,它按预期工作ComboBoxStyle.DropDownList
但我宁愿使用ComboBoxStyle.DropDown
,因此您可以编辑文本以搜索字体。
c# - How to call event on formload drawitem
I am using this code to put a image in listbox but the text does not show . When I click on the list then it shows . What is the problem ?
c# - TabPage 控件中的 OnDrawItem 方法问题
我需要一个具有不同 TabPage Header 的自定义 TabControl。我已将 DrawMode 属性设置为“OwnerDrawFixed”,以便调用 OnDrawItem 方法。
在 OnDrawItem 方法中,我这样做:
将为每个现有页面调用该代码,并带有匹配的索引。但无论我做什么,它总是使用相同的 Header。
他正在绘制的矩形似乎是正确的。我也试过这样:
结果相同。那是我的 DrawTab 函数:
每个选项卡都应该是橙色的。但只有第一个会正确显示。(图片链接)
我不明白我的错误。
我希望有人能启发我:)
此致,
西蒙
*****更新***** 这是 TabPage 控件的完整代码,它正在执行选项卡绘制。我不确定为什么,但第二个选项卡中的缓冲区图像始终是透明的。
c# - 鼠标悬停在自定义 ListBox 的 ListBoxItems 上
我在 c# 中创建了一个自定义列表框。我使用 DrawItemEventArgs 在我的自定义 ListBox 上绘制了文本和图像。当鼠标悬停在矩形上时,我想在矩形(ListBox 的项)中填充一种颜色。有没有办法使用 DrawItemEventArgs 或其他方式。请帮忙。提前致谢。
mfc - OnEraseBkgnd(CDC* pDC) 处理程序中的设备上下文为空
我面临一个问题,我在 OnEraseBkgnd 功能处理程序中将设备上下文设置为 NULL。我在从 CTabCtrl 继承的自定义 Tab 控件类中有 OnEraseBkgnd 处理程序,在从 CButton 继承的另一个自定义按钮控件类的 DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 中也遇到了同样的问题。
设备上下文偶尔会变为 NULL,但并非总是如此。如果知道为什么此设备上下文会变为 NULL,请告诉我。
winapi - SysTabControl32 的 WM_DRAWITEM 被重绘?
我必须重新设计我们的 SysTabControl32,所以我尝试使用 TCS_OWNERDRAWFIXED 和 WM_DRAWITEM。一切正常,但似乎选项卡仍然被系统覆盖。
不幸的是,代码在可视对象中,这使事情变得更加复杂。在过去的几个小时里,我已经尝试了很多东西,暂时我一无所知。也许你们中的一些人可以提供帮助或给我一个提示。
这里有一些图片:
带有 TCS_OWNERDRAWFIXED 的“裸”选项卡控件。WM_DRAWITEM 处没有代码。
您会注意到选项卡未填充,但 3D 样式已绘制。这是我的主要问题,因为只要我知道这不应该发生。
带有文本和背景颜色的 Ownerdrawn 选项卡(丑陋但对查看问题很有用)
相同的 TabControl,但设置了 TCS_FLATBUTTONS 和 TCS_EX_FLATSEPARATORS。仍然是灰色背景的问题。
如您所知,WM_DRAWITEM 将在父窗口中捕获。我还尝试在 TabControl 本身中覆盖或忽略 WM_PAINT。但这无济于事。
我也玩过 WM_ERASEBKGND,但我被困在这一点上。
在从 codeplex 到 codeguru 甚至 vbAccelerator 的所有页面上,它都应该可以工作。应该:)不知道它是否是视觉对象,但API是API,这仍然是一个标准控件。
WM_DRAWITEM 包含此代码,看起来还可以。项目是 DRAWITEMSTRUCT。
vb.net-2010 - 在 DataRepeater_DrawItem 事件期间检索位于面板上的文本框的 .Text
我正在使用 DataRepeater 的 DrawItem 事件来更改基于 .Text 内容的文本框的 .BackColor 和 .ForeColor 。这工作得很好,除非文本框位于面板上。如果文本框在面板上,那么我将返回此异常:“对象引用未设置为对象的实例。” 它表示“e.DataRepeaterItem.Controls(txt_AWQRecordStatus.Name).Text”没有值。单步执行代码即可确认。
但是...如果我只是将该文本框从面板上滑下来,那么它就可以了。我的 Google-Fu 让我失望了。我错过了什么?
附加信息:Visual Studio 2010 Professional,VB.Net 目标 .NET 4.0
delphi - 如何制作带有缩略图的 FileListBox?
我正在尝试使用缩略图构建文件列表框。为了实现这一点,我正在做:
- 用文件夹中的文件馈送 a
TListBox
。 - 用缩略图构建一个数组——为此我使用一个临时
TImage
组件来加载图片并调整它的大小。 - 用缩略图绘制列表框。
这是我的代码:使用数组TImage
而不是的旧版本TBitmap
正在工作,但仅在小文件夹中工作-但在包含 100 多个文件的文件夹中,CPU 运行 100% 并且需要大量时间处理,所以我尝试更改TBitmap
为TImage`,但现在我看不到缩略图了。