明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1305|回复: 8

CAD颜色下拉框 可以用C#下拉列表框combobox实现吗

[复制链接]
发表于 2024-8-31 17:40:18 | 显示全部楼层 |阅读模式

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2024-8-31 19:44:20 | 显示全部楼层
这种四代目不是做了吗?
 楼主| 发表于 2024-9-1 03:12:29 | 显示全部楼层
在啦里,呀,没找到亚
发表于 2024-9-1 13:31:49 | 显示全部楼层
Graphics.FillRectangle  Graphics.DrawRectangle
发表于 2024-9-1 16:18:57 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2024-9-3 21:02:10 来自手机 | 显示全部楼层
厉害啊,这个好。
 楼主| 发表于 2024-11-15 20:19:11 | 显示全部楼层
我也会了,谢谢啦
回复 支持 反对

使用道具 举报

发表于 2025-2-2 15:59:22 | 显示全部楼层
Private Sub Zsbd_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
     ' 设置 ComboBox 的 DrawMode 为 OwnerDrawFixed
     cmbColors.DrawMode = DrawMode.OwnerDrawFixed

     ' 加载颜色到下拉框
     LoadColors()
     
End Sub

Private Sub LoadColors()
     ' 示例颜色以及对应的中文名称
     Dim colorItems As (Color, String)() = {
         (Color.Red, "红"),
         (Color.Yellow, "黄"),
         (Color.Green, "绿"),
         (Color.Cyan, "青"),
         (Color.Blue, "蓝"),
         (Color.Magenta, "洋红"),
         (Color.Black, "黑白")
      }

     ' 添加颜色项到下拉框
     For Each item In colorItems
         cmbColors.Items.Add(New ColorItem(item.Item1, item.Item2))
     Next

     ' 设置下拉框默认选择项
     If cmbColors.Items.Count > 0 Then
         cmbColors.SelectedIndex = 0
     End If
End Sub

Private Sub CmbColors_DrawItem(sender As Object, e As DrawItemEventArgs) Handles cmbColors.DrawItem
     ' 确保索引是有效的
     If e.Index < 0 Then Return

     ' 获取当前项
     Dim item As ColorItem = CType(cmbColors.Items(e.Index), ColorItem)

     ' 绘制背景
     e.DrawBackground()

     ' 绘制颜色矩形
     Dim colorRect As Rectangle = New Rectangle(e.Bounds.Left + 2, e.Bounds.Top + 2, 20, e.Bounds.Height - 4)
     Using brush As New SolidBrush(item.Color)
         e.Graphics.FillRectangle(brush, colorRect)
     End Using

     ' 绘制颜色矩形的边框
     Using pen As New Pen(Color.Black)
         e.Graphics.DrawRectangle(pen, colorRect)
     End Using

     ' 绘制颜色名称
     Using brush As New SolidBrush(e.ForeColor)
         e.Graphics.DrawString(item.ColorName, e.Font, brush, e.Bounds.Left + 26, e.Bounds.Top + 2)
     End Using

     ' 绘制焦点矩形
     e.DrawFocusRectangle()
End Sub

' 自定义颜色项类
Private Class ColorItem
     Public Property Color As Color
     Public Property ColorName As String

     Public Sub New(color As Color, colorName As String)
         Me.Color = color
         Me.ColorName = colorName
     End Sub

     Public Overrides Function ToString() As String
         Return ColorName
     End Function

End Class
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-23 01:03 , Processed in 0.155407 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表