C# 动态列表框,其中每个框都有DrawItem事件
我正在创建一个TabControl,它在每个动态创建的TabPage上都包含一个动态创建的列表框,每个列表框都有不同的内容。 对于每个列表框,我希望处理其中的文本(根据所示代码中不可见的状态更改其颜色) 目前,我正在使用一个类为特定列表框的文本着色,该类保存文本的颜色和将用于行的消息 用于手动创建的列表框的代码示例:C# 动态列表框,其中每个框都有DrawItem事件,c#,dynamic,listbox,event-handling,draw,C#,Dynamic,Listbox,Event Handling,Draw,我正在创建一个TabControl,它在每个动态创建的TabPage上都包含一个动态创建的列表框,每个列表框都有不同的内容。 对于每个列表框,我希望处理其中的文本(根据所示代码中不可见的状态更改其颜色) 目前,我正在使用一个类为特定列表框的文本着色,该类保存文本的颜色和将用于行的消息 用于手动创建的列表框的代码示例: private void listBoxLogs_DrawItem(object sender, DrawItemEventArgs e) { if
private void listBoxLogs_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index < 0)
{
return;
}
ListBoxLogsItem item = listBoxLogs.Items[e.Index] as ListBoxLogsItem;
if (item != null)
{
e.DrawBackground();
e.Graphics.DrawString(item.m_message, listBoxLogs.Font, item.m_color, e.Bounds, System.Drawing.StringFormat.GenericDefault);
System.Drawing.Graphics g = listBoxLogs.CreateGraphics();
System.Drawing.SizeF s = g.MeasureString(item.m_message, listBoxLogs.Font);
if (s.Width > listBoxLogs.HorizontalExtent)
{
listBoxLogs.HorizontalExtent = (int)s.Width + 2;
}
}
}
我不知道如何识别调用DrawItemEventHandler“this.listBoxLogs\u DrawItem”的ListBox
有人能告诉我如何做到这一点,或者用另一种方法让我得到相同的结果吗?
发送方是引发您正在处理的事件的控件。在属性网格中创建处理程序时,所选控件是什么?列表框。这就是引发事件的控件
private void listBoxLogs_DrawItem(object sender, DrawItemEventArgs e)
{
ListBox lbSender = (ListBox)sender;
// ...other stuff
}
通常,在处理程序方法中插入断点,并在引发事件时在运行时检查参数。这总是一个快速了解这些事情的方法 sender
是引发您正在处理的事件的控件。在属性网格中创建处理程序时,所选控件是什么?列表框。这就是引发事件的控件
private void listBoxLogs_DrawItem(object sender, DrawItemEventArgs e)
{
ListBox lbSender = (ListBox)sender;
// ...other stuff
}
通常,在处理程序方法中插入断点,并在引发事件时在运行时检查参数。这总是一个快速了解这些事情的方法 我不知道你在问什么,但你可以通过引用或设置ListBox.Name来识别它们。你能说出你想用哪种方式识别他们吗?传递的参数“sender”是您的列表框。只需将它转换为ListBoxálavar anyListBox=(ListBox)发送方代码>谢谢@Bagerfahrer这是我错过的东西。我不确定你在问什么,但你可以通过引用或设置ListBox.Name来识别它们。你能说出你想用哪种方式识别他们吗?传递的参数“sender”是您的列表框。只需将它转换为ListBoxálavar anyListBox=(ListBox)发送方代码>谢谢@Bagerfahrer这是我错过的东西。谢谢@Ed我不知道为什么我没有调查发件人。。。我在手表中看到它的显示值是{SelectedItem=”“},我不认为它看起来像毛茸茸的。谢谢@Ed我不知道为什么我没有查看发件人。。。我看到它在手表中的显示值是{SelectedItem=”“},我不认为它看起来像毛茸茸的。