0%

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


①ListView:

ListView是一种数据归类的控件,可以将数据以不同形式呈现给用户,下面将以Detail视图为例介绍ListView的使用方法。 首先需要判断数据呈现方式是否方便以Detail呈现。标准的Detail视图是这样的: 即一行有多个数据,或者说一个数据有多种属性,这样最适合使用Detail视图,但是对于这种: 即一行只有一个数据,或者数据不具有其他属性,就完全没必要使用,改为使用List视图。使用Detail视图未免有些小题大做,且影响美观。 使用Detail视图的代码:

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

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

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

如此,可以连续定义多个列名,注意,使用列表前一定要先定义好列名,否则无法插入数据。 然后,又有以下常用可选项:

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

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

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

以此类推,我们可以在一行中依次添加数据直到达到定义列数,如此再添加任意行。注意,添加首项,也就是第一列,与第二项,也就是第二列的方式不同。 到这里写入数据也完成了,如果要输出数据呢?

1
2
3
4
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(读) 以此类推。 特殊项:

1
2
3
4
5
6
7
8
//↓删除框选的行
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控件:

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

也可以删除一个TabPage控件:

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

查看目前选中的标签页:

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

这里可以看出,每添加一个TabPage,TabControl控件都会给它添加一个索引,并且索引从零开始。 再看里面的TabPage控件,它的主要用法是查看其中是否包含某种控件并引用之:

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

③RichTextBox

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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。