Sunny.UI.UIListBox 控件默认不支持水平滚动条,但是你可以通过以下代码实现:
1. 将 UIListBox 的 Dock 属性设置为 None。
2. 添加一个 Panel 控件作为 UIListBox 的父容器,设置其 Dock 属性为 Top,并将 UIListBox 控件添加到 Panel 控件中。
3. 添加一个 HScrollBar 控件作为水平滚动条,设置其 Dock 属性为 Bottom;设置 Panel 控件的 AutoScroll 属性为 False。
4. 编写 HScrollBar 的 Scroll 事件处理程序,设置 UIListBox 的 Left 属性为负的 HScrollBar.Value 值。
示例代码:
private void Form1_Load(object sender, EventArgs e)
{
// 添加 Panel 控件作为 UIListBox 的父容器
Panel panel = new Panel();
panel.Dock = DockStyle.Top;
this.Controls.Add(panel);
// 添加 UIListBox 控件到 Panel 控件中
Sunny.UI.UIListBox listBox = new Sunny.UI.UIListBox();
listBox.Dock = DockStyle.None;
listBox.MultiSelect = true;
listBox.Width = 200;
listBox.Height = 200;
listBox.Items.Add("Item 1");
listBox.Items.Add("Item 2");
listBox.Items.Add("Item 3");
listBox.Items.Add("Item 4");
listBox.Items.Add("Item 5");
listBox.Items.Add("Item 6");
listBox.Items.Add("Item 7");
listBox.Items.Add("Item 8");
listBox.Items.Add("Item 9");
panel.Controls.Add(listBox);
// 添加 HScrollBar 控件作为水平滚动条
HScrollBar hScrollBar = new HScrollBar();
hScrollBar.Dock = DockStyle.Bottom;
hScrollBar.Minimum = 0;
hScrollBar.Maximum = listBox.Width;
hScrollBar.ValueChanged += HScrollBar_ValueChanged;
this.Controls.Add(hScrollBar);
// 设置 Panel 的 AutoScroll 属性为 False
panel.AutoScroll = false;
}
private void HScrollBar_ValueChanged(object sender, EventArgs e)
{
// 设置 UIListBox 的 Left 属性为负的 HScrollBar.Value 值
Sunny.UI.UIListBox listBox = this.Controls
.OfType<Sunny.UI.UIListBox>()
.FirstOrDefault();
listBox.Left = -((HScrollBar)sender).Value;
}
原理:把LISTBOX的宽度设置成每行项目文本所需的最大长度,就可以利用HScrollBar进行水平滚动。
小技巧,特此记录
2430

被折叠的 条评论
为什么被折叠?



