【C#】控件知识点总结(ListView、TabControl、RichTextBox)

 

①ListView:

ListView是一种数据归类的控件,可以将数据以不同形式呈现给用户,下面将以Detail视图为例介绍ListView的使用方法。

首先需要判断数据呈现方式是否方便以Detail呈现。标准的Detail视图是这样的:

即一行有多个数据,或者说一个数据有多种属性,这样最适合使用Detail视图,但是对于这种:

即一行只有一个数据,或者数据不具有其他属性,就完全没必要使用,改为使用List视图。使用Detail视图未免有些小题大做,且影响美观。

使用Detail视图的代码:

listView.View = System.Windows.Forms.View.Details;

确定使用Detail视图后,我们就可以准备在其中添加列名了。添加方法如下:

listView.Columns.Add("姓名", 260, HorizontalAlignment.Center);
//listView.Columns.Add("列名", 列视图长度, 文字呈现方式(居中等));

如此,可以连续定义多个列名,注意,使用列表前一定要先定义好列名,否则无法插入数据。

然后,又有以下常用可选项:

listView.FullRowSelect = true;//设置一选选一行,而不是选具体某一行的某一项
listView.CheckBoxes = true;//为每项添加一个勾选框
listView.MultiSelect = true;//可多选
listView.GridLines = true;//为每一行添加行线
listView.AllowColumnReorder = true;//设置用户是否可以拖动列名来更改默认的列位置

至此,一个Detail视图的Listview就定义好了,我们定义它肯定是为了让它显示数据,那么如何给它添加数据呢?

ListViewItem lv = new ListViewItem();//实例化一个ListViewItem,这就像当时列表的一行
lv.Text = "1";//为ListViewItem添加首项,就是第一列
lv.SubItems.Add("2");//为ListViewItem添加第二项,就是第二列
this.listView1.Items.Add(lv);//将lv这一项添加到列表Listview1中

以此类推,我们可以在一行中依次添加数据直到达到定义列数,如此再添加任意行。注意,添加首项,也就是第一列,与第二项,也就是第二列的方式不同。

 

到这里写入数据也完成了,如果要输出数据呢?

foreach (ListViewItem item in listView.Items)//遍历行
{
    Label1.Text+=item.SubItems[0].Text + "|" + item.SubItems[1].Text;
}//读取列,这里一共两列,以“|”分隔数据打印出来

这里可以看出,item.Text=”1″(写)对应item.SubItems[0].Text(读)

item.SubItems.Add(“2”)(写)对应item.SubItems[1].Text(读)

以此类推。

特殊项:

//↓删除框选的行
foreach (ListViewItem lvi in listView.CheckedItems) //选中项遍历
{
    listView.Items.RemoveAt(lvi.Index); // 按索引移除
    //listView1.Items.Remove(lvi); //按项移除
    //↓清空列表
    listView.Items.Clear();
}

 

②TabControl

TabControl是一种可以存放其他控件的控件,准确地说并不是TabControl可以存放其他控件,而是TabControl所控制的TabPage这种控件可以容纳其他控件。如图

这一整个是一个TabControl控件,而那里面包含的两个标签页称为两个TabPage控件。

首先,我们来看TabControl控件:

它的作用是控制里面的TabPage控件,我们可以添加一个TabPage控件:

TabPage tpage = new TabPage();//创建一个新TabPage对象
tpage.Text = "New List " ;//更改标签页对象名
tpage.Name = "New List " ;//更改标签页对象现实的文字
TabControl.TabPages.Add(tpage);//向TabControl控件中添加这个标签页对象

也可以删除一个TabPage控件:

TabControl.TabPages.Remove(TabControl.TabPages[0]);//删除此TabControl控件中的第一个标签页

查看目前选中的标签页:

label1.Text=TabControl.SelectedIndex.ToString();

这里可以看出,每添加一个TabPage,TabControl控件都会给它添加一个索引,并且索引从零开始。

再看里面的TabPage控件,它的主要用法是查看其中是否包含某种控件并引用之:

//↓如果目前所选标签页中包含ListView控件,那么允许其多选
foreach (Control control in TabControl.SelectedTab.Controls)//便利标签页中的所有控件
{
    if (control is ListView)//如果控件为ListView类型
    {
        ListView lv = (ListView)control;//将其声明为lv
        lv.MultiSelect = true;//允许该控件多选
    }
}

 

③RichTextBox

该控件是可设置字体格式的文本框,但是由于微软的限制该控件无法透明化,此时需要新建一个类,并且写入以下代码:

using System.Windows.Forms;
using System.Runtime.InteropServices;

public class TransTextBox : RichTextBox
{
    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
    static extern IntPtr LoadLibrary(string lpFileName);

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams prams = base.CreateParams;
            if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
            {
                prams.ExStyle |= 0x020;
                prams.ClassName = "RICHEDIT50W";
            }
            return prams;
        }
    }
}

然后找到:工具>选项>Windows窗体设计器>常规>自动填充工具箱>True
这时就可以从工具箱中找到该控件了,空间名为类名,即TransTextBox。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据