winform Sunny.UI.UIListBox水平滚动条

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进行水平滚动。

小技巧,特此记录

在使用 `Sunny.UI` 中的 `UIButton` 控件时,开发者可以像使用标准 WinForm 控件一样进行操作。该控件支持多种样式和主题设置,适合用于构建具有现代外观的 Windows 应用程序界面。 创建一个 `UIButton` 实例的基本步骤如下: ```csharp // 创建一个 UIButton 实例 UIButton btnSubmit = new UIButton(); // 设置按钮上的文本 btnSubmit.Text = "提交"; // 设置按钮的位置 btnSubmit.Location = new Point(100, 100); // 设置按钮的样式为蓝色 btnSubmit.Style = UIStyle.Blue; // 将按钮添加到窗体的控件集合中 this.Controls.Add(btnSubmit); ``` 对于更复杂的场景,比如设置窗体的主题,可以使用 `UIMainFormHelper` 类来完成。以下是一个完整的示例,展示了如何在一个继承自 `UIForm` 的窗体类中初始化一个按钮,并设置窗体的主题[^2]: ```csharp using Sunny.UI; public partial class MainForm : UIForm { public MainForm() { InitializeComponent(); // 设置窗体主题为暗色系 UIMainFormHelper.SetTheme(this, UITheme.Dark); // 创建并添加一个SunnyUI按钮 UIButton button = new UIButton(); button.Text = "Click me!"; button.Size = new Size(100, 30); button.Location = new Point(10, 10); this.Controls.Add(button); } } ``` 通过这些代码片段,可以看到 `UIButton` 的基本用法以及如何将其集成到基于 `Sunny.UI` 构建的应用程序中。开发者可以根据具体需求调整属性,如 `Text`, `Location`, `Size` 和 `Style` 等,以实现所需的功能和视觉效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值