【发布时间】:2016-10-10 19:10:59
【问题描述】:
我有一个按如下方式实现 OwnerDrawMode 的组合框:
this.comboBox8.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
this.comboBox8.DrawItem += new DrawItemEventHandler(comboBox8_DrawItem);
this.comboBox8.MeasureItem += new MeasureItemEventHandler(comboBox8_MeasureItem);
这很好,但我现在想创建另外五个类似的组合框(9 到 13),它们基本上是相同的,例如 MeasureItems 只是
private void comboBox8_MeasureItem(object sender, MeasureItemEventArgs e)
{
e.ItemWidth = 44;
e.ItemHeight = 15;
}
private void comboBox9_MeasureItem(object sender, MeasureItemEventArgs e)
{
e.ItemWidth = 44;
e.ItemHeight = 15;
}
等等
只是重新输入它们似乎很简单但很笨拙:-)
当我来到 Draw Items 时,它们包含代码 sn-p,不会因盒子而异(如上所示,但还有代码 sn-ps,其中逻辑不会改变但名称从 8 开始变化到 9-13
private void comboBox8_DrawItem(object sender, DrawItemEventArgs e)
{
comboBox8.DataSource = c8_suits;
if (e.Index >= 0) e.Graphics.DrawString(comboBox8.Items[e.Index].ToString(),
e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
}
TIA。
【问题讨论】:
-
那么就拥有一个并使用同一个......这不像你有不同的逻辑要担心。说实话,不太确定你的问题是什么
-
另外...假设你保留了所有这些,你为什么要重新输入?你没听说过复制粘贴吗?
-
@Shreevadhan 的答案很可能是您正在寻找的。但要考虑的一件事 - 每次按钮点击的所有逻辑是否相同?
-
逻辑是一样的,但命名发生了变化,我不知道如何实现。例如,当我来到 Draw 事件时,会有类似 if (e.Index >= 0) e.Graphics.DrawString(comboBox8.Items[e.Index].ToString(), e.Font, myBrush, e .Bounds, StringFormat.GenericDefault);将 8 替换为 9,依此类推。
-
如果我理解正确,那么您可以使用
sender并将其转换为ComboBox以在逻辑中获取其Items。你能否在你的问题中包含这个逻辑,所以它更清楚一点,好吗?事实证明,这对这个问题非常重要。
标签: c# events event-handling