C#列表框、复选列表框、组合框的用法实例

C#列表框、复选列表框、组合框的用法实例

列表框(ListBox)的用法

基本用法

列表框是Windows Forms中的一个控件,用于在提供选项列表(一个或多个)的窗体或对话框中选择单个选项,它的常用属性有:

  • DataSource:列表框的数据源对象;
  • DisplayMember:指定数据绑定时显示的属性名;
  • ValueMember:指定数据绑定时使用的属性名;
  • SelectionMode:列表框的选择模式,可选用单选和多选两种模式。

例如:

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(int)));
dt.Columns.Add(new DataColumn("Name", typeof(string)));
dt.Rows.Add(1, "Tom");
dt.Rows.Add(2, "Jerry");
dt.Rows.Add(3, "Lucy");

this.listBox1.DataSource = dt;
this.listBox1.DisplayMember = "Name";
this.listBox1.ValueMember = "ID";
this.listBox1.SelectionMode = SelectionMode.MultiSimple;

上面的代码用 DataTable 来作为数据源,设置了显示的属性为 Name,使用的属性为 ID,选择模式为 MultiSimple,这意味着用户可以选择多个选项,选择结果通过 SelectedValues 属性获取,如下所示:

foreach (object item in this.listBox1.SelectedItems)
{
    DataRowView dr = item as DataRowView;
    Console.WriteLine(dr.Row["ID"].ToString() + " " + dr.Row["Name"].ToString());
}

列表框选项的添加、删除、清空

在不使用数据绑定的情况下,我们可以通过 Items 属性来添加、删除和清空列表框的选项。

this.listBox2.Items.Clear();
this.listBox2.Items.Add("选项一");
this.listBox2.Items.Add("选项二");
this.listBox2.Items.Add("选项三");
this.listBox2.Items.Add("选项四");

this.listBox2.Items.RemoveAt(1);
this.listBox2.Items.Remove("选项四");

复选列表框(CheckedListBox)的用法

基本用法

复选列表框是 Windows Forms 中的一个控件,是列表框的一个扩展,与列表框最大的不同就是本身就可支持多项选择。其常用属性有:

  • DataSource:复选列表框的数据源对象;
  • DisplayMember:指定数据绑定时显示的属性名;
  • ValueMember:指定数据绑定时使用的属性名;
  • CheckOnClick:指示是否单击项时就激活或取消复选框;
  • SelectionMode:复选列表框的选择模式,可选用单选和多选两种模式。

例如:

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(int)));
dt.Columns.Add(new DataColumn("Name", typeof(string)));
dt.Rows.Add(1, "Tom");
dt.Rows.Add(2, "Jerry");
dt.Rows.Add(3, "Lucy");

this.checkedListBox1.DataSource = dt;
this.checkedListBox1.DisplayMember = "Name";
this.checkedListBox1.ValueMember = "ID";
this.checkedListBox1.CheckOnClick = true;
this.checkedListBox1.SelectionMode = SelectionMode.MultiSimple;

上面的代码用 DataTable 来作为数据源,设置了显示的属性为 Name,使用的属性为 ID,启用了单击项就激活复选框,并且选择模式为 MultiSimple,这意味着用户可以选择多个选项,选择结果通过 CheckedItems 属性获取,如下所示:

foreach (object item in this.checkedListBox1.CheckedItems)
{
    DataRowView dr = item as DataRowView;
    Console.WriteLine(dr.Row["ID"].ToString() + " " + dr.Row["Name"].ToString());
}

复选列表框选项的添加、删除、清空

在不使用数据绑定的情况下,我们可以通过 Items 属性来添加、删除和清空复选列表框的选项。

this.checkedListBox2.Items.Clear();
this.checkedListBox2.Items.Add("选项一");
this.checkedListBox2.Items.Add("选项二");
this.checkedListBox2.Items.Add("选项三");
this.checkedListBox2.Items.Add("选项四");

this.checkedListBox2.Items.RemoveAt(1);
this.checkedListBox2.Items.Remove("选项四");

组合框(ComboBox)的用法

基本用法

组合框是 Windows Forms 中的一个控件,它能够处理一个下拉列表和一个用户输入的文本框。当用户单击组合框时,其下拉列表中的项将会弹出。如果用户在文本框中键入数值,组合框将会根据显示样式自动格式化文本。它的常用属性有:

  • DataSource:组合框的数据源对象;
  • DisplayMember:指定数据绑定时显示的属性名;
  • ValueMember:指定数据绑定时使用的属性名;
  • DropDownStyle:指定组合框中的下拉列表的样式,可选用三种下拉列表方式,Simple,DropDown和DropDownList三种;
  • Text:组合框文本框中的文本字符串;
  • Items:组合框中所有项的集合。

例如:

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(int)));
dt.Columns.Add(new DataColumn("Name", typeof(string)));
dt.Rows.Add(1, "Apple");
dt.Rows.Add(2, "Banana");
dt.Rows.Add(3, "Orange");

this.comboBox1.DataSource = dt;
this.comboBox1.DisplayMember = "Name";
this.comboBox1.ValueMember = "ID";
this.comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;

this.comboBox1.SelectedIndex = 1;

上面的代码用 DataTable 来作为数据源,设置了显示的属性为 Name,使用的属性为 ID,选择样式为 DropDownList,这意味着用户不能输入任意文本,只能从数据源中的选项列表中选择。同时设置了默认选择索引为1,即“Banana”这一选项。

组合框选项的添加、删除、清空

在不使用数据绑定的情况下,我们可以通过 Items 属性来添加、删除和清空组合框的选项。

this.comboBox2.Items.Clear();
this.comboBox2.Items.Add("选项一");
this.comboBox2.Items.Add("选项二");
this.comboBox2.Items.Add("选项三");
this.comboBox2.Items.Add("选项四");

this.comboBox2.Items.RemoveAt(1);
this.comboBox2.Items.Remove("选项四");

示例一

创建一个程序,用列表框选择一个图片,再通过PictureBox控件把选择的图片显示出来。

首先要在项目的“引用”中添加“System.Drawing”命名空间:

using System.Drawing;

在Form中添加一个列表框控件和一个PictureBox控件,代码如下:

private void Form1_Load(object sender, EventArgs e)
{
    // 增加图片选项
    DirectoryInfo dir = new DirectoryInfo("Images");
    foreach (FileInfo file in dir.GetFiles())
    {
        if (file.Extension.ToLower().Equals(".jpg"))
        {
            this.listBox1.Items.Add(file.Name);
        }
    }
}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    string filename = "Images\\" + this.listBox1.SelectedItem.ToString();
    Image img = Image.FromFile(filename);
    this.pictureBox1.Image = img;
}

上面的代码首先增加图片选项到列表框中,然后在 SelectedIndexChanged 事件中获取选择项的文件名,再通过 Image.FromFile 方法读取图片文件,最后显示到 PictureBox 控件上。

示例二

创建一个程序,用组合框选择不同字体,并可通过控制RadioButton和CheckBox控件来设置其字体大小和样式。

在Form中添加ComboBo控件、RadioButton控件和CheckBox控件3个控件,代码如下:

private void Form1_Load(object sender, EventArgs e)
{
    foreach (FontFamily ff in FontFamily.Families)
    {
        this.comboBox1.Items.Add(ff.Name);
    }
    this.comboBox1.SelectedIndex = 0;
    this.radioButton1.Checked = true;
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    Font font = new Font(this.comboBox1.SelectedItem.ToString(), 16);
    if (this.radioButton1.Checked)
    {
        font = new Font(this.comboBox1.SelectedItem.ToString(), 16, FontStyle.Regular);
    }
    else if (this.radioButton2.Checked)
    {
        font = new Font(this.comboBox1.SelectedItem.ToString(), 16, FontStyle.Bold);
    }
    else if (this.radioButton3.Checked)
    {
        font = new Font(this.comboBox1.SelectedItem.ToString(), 16, FontStyle.Italic);
    }

    if (this.checkBox1.Checked) font = new Font(font, FontStyle.Underline);
    if (this.checkBox2.Checked) font = new Font(font, FontStyle.Strikeout);

    this.label1.Font = font;
}

上面的代码首先加载了所有系统字体到组合框中,然后在 SelectedIndexChanged 事件中根据各个控件的状态创建字体对象,并将其作为 Label 的字体。其中主要的代码如下:

Font font = new Font(this.comboBox1.SelectedItem.ToString(), 16);
if (this.radioButton1.Checked)
{
    font = new Font(this.comboBox1.SelectedItem.ToString(), 16, FontStyle.Regular);
}
else if (this.radioButton2.Checked)
{
    font = new Font(this.comboBox1.SelectedItem.ToString(), 16, FontStyle.Bold);
}
else if (this.radioButton3.Checked)
{
    font = new Font(this.comboBox1.SelectedItem.ToString(), 16, FontStyle.Italic);
}

if (this.checkBox1.Checked) font = new Font(font, FontStyle.Underline);
if (this.checkBox2.Checked) font = new Font(font, FontStyle.Strikeout);

this.label1.Font = font;

其中首先通过 ComboBox 控件选择的字体名称来创建 Font 对象,然后根据 RadioButton 控件选择的样式,设置字体对象的样式。最后根据 CheckBox 控件确定是否需要设置 Underline 和 Strikeout 样式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#列表框、复选列表框、组合框的用法实例 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • 详解.NET Core 3.0 里新的JSON API

    在本攻略中,我们将详细讲解.NET Core 3.0中新的JSON API,并提供两个示例说明。 安装Microsoft.AspNetCore.Mvc.NewtonsoftJson:首先,我们需要安装Microsoft.AspNetCore.Mvc.NewtonsoftJson NuGet包。我们可以使用Visual Studio的Get包管理器来安装Mic…

    C# 2023年5月16日
    00
  • .net core中的System.Buffers命名空间

    在.NET Core中,System.Buffers命名空间提供了一组用于处理内存缓冲区的类型和方法。这些类型和方法可以帮助您更有效地管理内存,并提高应用程序的性能。在本攻略中,我们将详细讲解System.Buffers命名空间,并提供两个示例说明。 步骤一:了解System.Buffers命名空间 System.Buffers命名空间提供了以下类型和方法:…

    C# 2023年5月17日
    00
  • C# File.ReadAllBytes()方法: 读取指定文件的所有字节

    File.ReadAllBytes()的作用与使用方法 C#的 File.ReadAllBytes(string path) 方法可以从指定的文件中读取出所有字节,并返回一个字节数组。这个方法适用于任何类型的文件,无需事先知道文件的格式,只需要提供文件的路径即可。 语法示例 下面是使用 File.ReadAllBytes 方法的语法示例: byte[] fi…

    C# 2023年4月19日
    00
  • C# 设计模式系列教程-策略模式

    首先我们来介绍一下“C# 设计模式系列教程-策略模式”的概念。 策略模式 策略模式是一种行为型设计模式,它允许在运行时选择算法的行为。通过定义多个算法类实现同一个接口,并且可以随时切换算法,使得客户端程序能够根据不同的情况选择不同的算法。 策略模式的角色 策略模式涉及到三个角色: 上下文(Context):拥有多个算法类对象,维护一个对于策略对象的引用,可以…

    C# 2023年6月6日
    00
  • C# 匿名类型之 RuntimeBinderException

    匿名类型在某些场景下使用起来还是比较方便,比如某个类型只会使用一次,那这个时候定义一个 Class 就没有多少意义,完全可以使用匿名类型来解决,但是在跨项目使用时,还是需要注意避免出现 RuntimeBinderException 问题 问题描述 比如我们有一个 netstandard2.0 类型的类库项目,里面有一个这样的方法: public static…

    C# 2023年4月19日
    00
  • 基于C#实现宿舍管理系统

    基于C#实现宿舍管理系统攻略 一、项目概述 宿舍管理系统是一款致力于方便学生和宿管管理宿舍日常事务的软件。本项目基于C#语言开发,使用Visual Studio集成开发环境,采用MVC架构,使用SQL Server数据库,提供了较为完整的宿舍管理功能。 二、项目特点 支持多用户登录、身份验证、权限管理等功能,保证系统安全性。 提供完善的宿舍信息录入、查询、修…

    C# 2023年5月31日
    00
  • C#读写文件的方法汇总

    C#读写文件的方法汇总 在C#编程中,读写文件是一项非常常见的操作。本文将介绍C#语言中常用的文件读写方法。 1. FileStream类 FileStream是.NET Framework中用于读取、写入和操作文件的类。以下是使用FileStream类进行文件读写的示例代码: 读取文件 string path = @"C:\test.txt&qu…

    C# 2023年5月31日
    00
  • .Net使用Cancellation Framework取消并行任务

    .Net使用Cancellation Framework取消并行任务的攻略 在编写并行代码时,我们通常会遇到需要取消一组任务的情况,为此 .Net 提供了一套名为 “Cancellation Framework” 的机制来进行任务取消管理。本文将详细介绍 .Net 的 Cancellation Framework 的使用方法,同时提供两个示例以帮助理解。 C…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部