【愚公系列】2023年09月 Winform控件专题 ListBox控件详解


前言

Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、进度条等。开发人员可以使用Winform控件来构建用户界面并响应用户的操作行为,从而创建功能强大的桌面应用程序。

一、ListBox控件详解

ListBox是Winform中常用的列表控件,用于显示一列项目。ListBox控件相对简单,易于使用和定制。

常用属性和方法:

  1. Items:ListBox中的项目集合,可通过Add()方法添加项目。

  2. SelectedIndex:ListBox中选中项目的索引。

  3. SelectedItem:ListBox中选中项目的对象。

  4. MultiSelect:是否允许多选。

  5. SetSelected():设置指定项目的选中状态。

  6. ClearSelected():取消所有选中项目。

  7. GetSelected():获取所有选中项目的索引。

使用示例:

  1. 添加项目:
listBox1.Items.Add("item1");
listBox1.Items.Add("item2");
listBox1.Items.Add("item3");
  1. 获取选中项目:
if(listBox1.SelectedItem!=null)
{
    
    
    string selectedText = listBox1.SelectedItem.ToString();
    int selectedIndex = listBox1.SelectedIndex;
}
else
{
    
    
    MessageBox.Show("请选择一项");
}
  1. 设置选中状态:
listBox1.SetSelected(0, true);
listBox1.SetSelected(2, false);
  1. 多选:
listBox1.MultiSelect = true;

需要注意的是,ListBox控件仅用于显示,不支持编辑。如果需要编辑列表,可以使用DataGridView控件。

1.属性介绍

1.1 MultiColumn和ColumnWidth

ListBox控件中的MultiColumn属性用于设置是否启用多列显示。当该属性为true时,ListBox控件将会按照指定列数将项目显示在多列中,可以通过使用HorizontalExtent属性设置每一个列的宽度。以下是使用MultiColumn属性的示例代码:

// 启用多列显示
listBox1.MultiColumn = true;

// 设置列数
listBox1.ColumnWidth = 120;
int colNum = 3;
listBox1.Width = listBox1.ColumnWidth * colNum;

// 添加项目
for(int i=1; i<=12; i++)
{
    
    
    listBox1.Items.Add("item " + i.ToString());
}

在上述代码中,我们启用了ListBox控件的MultiColumn属性,并设置了列数为3。接着,我们设置了每一列的宽度为120像素,并通过计算得到了ListBox控件的总宽度。最后,我们添加了12个项目到ListBox控件中,这些项目将会按照3列的方式进行显示。

需要注意的是,在使用MultiColumn属性时,我们无法直接设置每一个列的宽度,需要通过使用HorizontalExtent属性来进行设置。在上述示例中,我们设置每一个列的宽度为120像素,因此我们将HorizontalExtent属性设置为120。

在这里插入图片描述

1.2 HorizontalExtent和HorizontalScrollbar

ListBox控件是Windows Forms中常用的选择列表控件,用于显示单列或多列的文本或图像。其中,HorizontalExtent和HorizontalScrollbar是两个重要的属性。

  1. HorizontalExtent属性:它指定ListBox控件中水平滚动条的显示宽度。当ListBox中的内容超出水平显示区域时,水平滚动条就会出现。该属性的值可设置为零或正整数。

  2. HorizontalScrollbar属性:它指定ListBox控件是否具有水平滚动条。设置为True时,控件将自动显示水平滚动条;设置为False时,水平滚动条将被隐藏。

下面是一个示例,演示如何使用HorizontalExtent和HorizontalScrollbar属性:

private void Form1_Load(object sender, EventArgs e)
{
    
    
    // 添加一些文本项
    listBox1.Items.Add("This is a long text item that will be horizontally scrolled.");
    listBox1.Items.Add("Short item");
    listBox1.Items.Add("Another long text item that will be horizontally scrolled.");

    // 设置水平滚动条的显示宽度
    listBox1.HorizontalExtent = 200;

    // 显示水平滚动条
    listBox1.HorizontalScrollbar = true;
}

在以上示例中,为了使ListBox控件中的长文本项能够水平滚动,我们设置了HorizontalExtent属性的值为200,并将HorizontalScrollbar属性设置为True,这样就会自动显示水平滚动条。
在这里插入图片描述

1.3 IntegralHeight和ItemHeight

ListBox控件是Winform中常用的列表控件,用于展示一组数据。其中,IntegralHeight和ItemHeight是两个常用的属性。

IntegralHeight是指ListBox的高度是否自适应,如果设置为True,则ListBox的高度将自适应为一个Item的高度的整数倍,这样可以避免出现Item被裁剪的情况。如果设置为False,则可以自由调整ListBox的高度。

ItemHeight是指ListBox中每个Item的高度,可以通过设置该属性来调整Item的高度。默认值为13像素。

例如,如果设置ListBox的IntegralHeight为True,ItemHeight为30,然后添加10个Item,那么ListBox的高度将自适应为30的整数倍,也就是300像素,每个Item的高度为30像素。

使用示例:

private void Form1_Load(object sender, EventArgs e)
{
    
    
    listBox1.IntegralHeight = true; // 自适应高度
    listBox1.ItemHeight = 30; // 每个Item的高度为30像素
    for (int i = 1; i <= 10; i++)
    {
    
    
        listBox1.Items.Add("Item " + i);
    }
}

在这里插入图片描述

1.4 SelectionMode

SelectionMode属性用于设置ListBox控件中的选择模式。它有三个枚举值:

  1. One:表示只能选择一个项。

  2. MultiSimple:表示可以选择多个项,但不支持框选,只能一个一个地选择。

  3. MultiExtended:表示可以选择多个项,并且支持框选,可以使用Ctrl键和Shift键来选择多个项。

可以通过以下代码设置SelectionMode属性:

listBox1.SelectionMode = SelectionMode.MultiExtended;

1.5 UseTabStops

ListBox控件的UseTabStops属性决定了列表中的文本是否应该使用制表符来设置文本的间距。如果将此属性设置为True,则ListBox控件将使用制表符将文本分隔成不同的列,并根据列的宽度显示文本。如果将其设置为False,则仅使用空格分隔文本。

以下是使用ListBox控件UseTabStops属性的示例:

  1. 在Visual Studio中创建一个新的Winform应用程序。

  2. 添加一个ListBox控件到窗体中。

  3. 在窗体的代码中添加以下代码:

private void Form1_Load(object sender, EventArgs e)
{
    
    
    listBox1.UseTabStops = true;
    listBox1.Items.Add("Apple\t$1");
    listBox1.Items.Add("Banana\t$2");
    listBox1.Items.Add("Orange\t$3");
}
  1. 运行应用程序,你将看到ListBox中的文本已经使用制表符设置了间距。

如果将UseTabStops属性设置为False,则列表中的文本将只使用空格来分隔文本,并且不会根据列的宽度对其进行对齐。

2.常用场景

Winform中ListBox控件常用于以下场景:

  1. 显示列表数据:ListBox可以用来显示列表数据,比如在一个邮件客户端中,可以使用ListBox控件来显示收件人列表。

  2. 选择操作:ListBox可以用来实现选择操作,比如在一个设置界面中,用户可以通过ListBox控件来选择不同的主题。

  3. 多选操作:ListBox还可以用来实现多选操作,比如在一个文件管理器中,用户可以通过ListBox控件来选择多个文件进行批量操作。

  4. 数据筛选:ListBox也可以用来实现数据筛选功能,比如在一个电商网站中,用户可以使用ListBox控件来筛选商品分类。

  5. 组合框:ListBox还可以用来实现组合框的功能,比如在一个日期选择器中,用户可以使用ListBox控件来选择年份、月份和日期。

3.具体案例

以下是一个Winform中ListBox控件的具体案例:

假设我们有一个字符串数组,其中包含一些城市的名称。我们想要在一个ListBox控件中显示这些城市,并允许用户选择一个城市。

首先,我们需要在窗体中添加一个ListBox控件。在Visual Studio中,我们可以通过从工具箱中拖动ListBox控件到窗体上来完成这个任务。

然后,我们需要在窗体加载时将城市名称添加到ListBox控件中。我们可以使用以下代码:

private void Form1_Load(object sender, EventArgs e)
{
    
    
    string[] cities = {
    
     "New York", "London", "Paris", "Tokyo", "Sydney" };

    foreach (string city in cities)
    {
    
    
        listBox1.Items.Add(city);
    }
}

现在,当窗体加载时,我们的ListBox控件将显示这些城市名称。

接下来,我们需要处理用户选择的城市。我们可以通过使用SelectedIndexChanged事件来完成这个任务。当用户选择一个城市时,我们将使用MessageBox.Show方法显示该城市的名称。以下是处理SelectedIndexChanged事件的代码:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    
    
    string selectedCity = listBox1.SelectedItem.ToString();
    MessageBox.Show("You selected: " + selectedCity);
}

现在,当用户选择一个城市时,该城市的名称将显示在MessageBox中。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/aa2528877987/article/details/132665526