C# winform中ListBox各项之间没有分割线?(VS2013)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# winform中ListBox各项之间没有分割线?(VS2013)相关的知识,希望对你有一定的参考价值。

请问如何才能使其出现分割线

参考技术A listBox1.DrawMode = DrawMode.OwnerDrawFixed;
首先将DrawMode为DrawMode.OwnerDrawFixed 或 DrawMode.OwnerDrawVariable 时,才触发该事件(DrawItem事件)
//在构造函数中写上触发的事件:
this.listBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBox1_DrawItem);

private void listBox1_DrawItem(object sender, DrawItemEventArgs e)

Brush myBrush = Brushes.Black;

if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)

myBrush = new SolidBrush(Color.FromArgb(0, 0, 255));//选中时背景颜色

else//没有选中时的背景颜色

myBrush = new SolidBrush(Color.White);

e.Graphics.FillRectangle(myBrush, e.Bounds);//填满矩形背景颜色
e.Graphics.DrawRectangle(new Pen(new SolidBrush(e.ForeColor)), e.Bounds);
e.DrawFocusRectangle();//焦点框

StringFormat stringformat = StringFormat.GenericDefault;
stringformat.LineAlignment = StringAlignment.Center;

e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds, stringformat);
本回答被提问者和网友采纳
参考技术B 重绘 ListItem样式追问

有代码吗?

C# Winforms:没有 AutoScroll 的滚动条

【中文标题】C# Winforms:没有 AutoScroll 的滚动条【英文标题】:C# Winforms: Scrollbars without AutoScroll 【发布时间】:2015-12-01 02:17:27 【问题描述】:

我有一个 TabPage,里面有东西。我的一些用户的屏幕很小,其中一些东西不适合。当我在 TabPage 上设置 AutoScroll tr​​ue 时,它​​会按预期添加滚动条。不过……

在这个 TabPage 中有一个 ListBox。 ListBox 的位置使得单击它以选择一个 ListItem会导致 TabPage 将整个 ListBox 滚动到视图中,这反过来又会导致单击选择错误的 ListItem。

如果我禁用 AutoScroll,ListBox 可以正常工作,但用户无法滚动 TabPage。

我曾尝试添加面板和 TableLayoutPanel,并弄乱了具有 AutoScroll 和不具有 AutoScroll 的各种组合。

我尝试了一个 DLLImport hack,它强制将一个无样式的滚动条放到面板上,但该滚动条没有做任何事情,而且它看起来不像应用程序中的其他滚动条。

编辑:请注意,有些用户的屏幕更大。在 那些 屏幕上,有足够的空间来显示整个 TabPage 而无需滚动,并且可以正常工作。

如何在没有 auto 滚动行为的情况下获得 scrollbars

【问题讨论】:

可以依靠VScrollBar & HScrollBar手动实现滚动条。 【参考方案1】:

尝试像这样创建一个新的面板控件:

public class PanelEx : Panel 
  protected override Point ScrollToControl(Control activeControl) 
    return this.DisplayRectangle.Location;
  

将此面板放在您的 TabPage 中,并将 Dock 属性设置为 Fill。将所有控件放入该面板而不是 TabPage。

【讨论】:

以上是关于C# winform中ListBox各项之间没有分割线?(VS2013)的主要内容,如果未能解决你的问题,请参考以下文章

C# Winforms:没有 AutoScroll 的滚动条

c# winform 程序如何同时读取两个com端口的数据,再一个界面。

c# winform listbox 如何 获取 当前 选中的值 急!!!

请教c# winform,权限设计问题

WinForm实现简单的拖拽功能(C#)

c#中如何设置listbox各选项中的字体