Winform/C#入门编程之第三部分容器(三:流方向布局控件FlowLayoutPanel)

简介:

FlowLayoutPanel 控件沿着水平或垂直流方向排列其内容。 其内容可从一行换到下一行,或者从一列换到下一列。 或者,还可以对它的内容进行剪裁,而不是进行换行。

可以通过设置 FlowDirection 属性的值来指定流向。 在从右向左 (RTL) 的布局中,FlowLayoutPanel 控件会相应地反转其流向。 还可以通过设置 WrapContents 属性的值来指定是对 FlowLayoutPanel 控件的内容进行换行还是剪裁。

任何 Windows 窗体控件(包括 FlowLayoutPanel 的其他实例)都可以是 FlowLayoutPanel 控件的子级。 使用此功能,可以构造在运行时能够根据窗体的尺寸进行相应调整的复杂布局。

子控件的停靠和锚定行为不同于其他容器控件中的行为。 停靠和锚定都是相对于流方向上的最大控件而言的。

 

介绍:

1.属性

常用属性
Name获取或设置控件的名称。
Text

获取或设置与此控件关联的文本。

Anchor

获取或设置控件绑定到的容器的边缘并确定控件如何随其父级一起调整大小。

Dock

获取或设置哪些控件边框停靠到其父控件并确定控件如何随其父级一起调整大小。

Size

获取或设置控件的高度和宽度。

FlowDirection
定义指定方向的常量,连续的用户界面 (UI) 元素将按照该方向放入线性布局容器中
LeftToRight元素从设计图面的左边缘流到右边缘。
TopDown元素从设计图面的顶部流到底部。
RightToLeft元素从设计图面的右边缘流到左边缘。
BottomUp元素从设计图面的底部流到顶部。

FlowDirection 枚举描述了设计图面或容器(如窗体)中的连续 UI 元素(通常为控件)的流向。 此枚举由诸如 FlowLayoutPanel 的线性布局容器使用,该容器在 FlowLayoutPanel. FlowDirection 属性内部存储此信息。

FlowDirection 确定了在向支持容器添加新控件时放置该控件的默认位置。 容器的流向以及包含的每个控件的 Anchor 和 Dock 属性确定了调整控件容器大小时控件的重排。

FlowLayoutPanel 控件为其子控件提供 FlowBreak 属性。 将 FlowBreak 属性的值设置为 true 会导致 FlowLayoutPanel 控件停止当前流向上的控件布局,而换到下一行或下一列。

ContextMenuStrip

获取或设置与此控件关联的 ContextMenuStrip。

Controls

获取包含在控件内的控件的集合。

AutoScroll

获取或设置一个值,该值指示容器是否允许用户滚动到任何放置在其可见边界之外的控件。

WrapContents

获取或设置一个值,该值指示应当对 FlowLayoutPanel 控件的内容进行换行还是剪裁。

RightToLeft

获取或设置一个值,该值指示是否将控件的元素对齐以支持使用从右向左的字体的区域设置。

 

2.使用

  1. 一般都是窗体或者自定义控件等UI按照顺序排列。
  2. 如果要把控件或则窗体等动态的放在此控件里面,使用Controls属性的Add方法。
  3. 解决方案名称上右键->添加->新建项->用户控件。用于排列测试。
  4. 更改属性FlowDirection。四中类型的排列方式。
FlowLayoutPanel 控件
自定义用户控件

 

3.演示

  1. FlowDirection四种排列方式
        private void Form1_Load(object sender, EventArgs e)
        {
            UserControl1 user = new UserControl1();
            flowLayoutPanel1.Controls.Add(user);
            user = new UserControl1();
            flowLayoutPanel1.Controls.Add(user);
        }

 

LeftToRight排列

 

RightToLeft排列

 

TopDown排列

 

BottomUp排列
  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤实现: 1. 添加Listview控件WinForm界面中。 2. 设置Listview控件的View属性为Details,并添加所需的列。 3. 在代码中,将需要上传的附件信息存储在一个List<Attachment>中,其中Attachment是一个自定义的类,包含附件的名称、路径等信息。 4. 将List<Attachment>中的数据绑定到Listview控件上,每个附件对应一行数据。 5. 通过双击Listview控件中的某一行,可以打开对应附件的查看界面。 6. 通过选中Listview控件中的某一行并点击删除按钮,可以删除对应附件。 以下是代码示例: ```csharp public partial class Form1 : Form { private List<Attachment> attachments = new List<Attachment>(); // 附件列表 public Form1() { InitializeComponent(); InitializeListView(); // 初始化Listview控件 LoadAttachments(); // 加载附件列表 } private void InitializeListView() { listView1.View = View.Details; // 设置Listview控件的View属性为Details listView1.FullRowSelect = true; // 设置Listview控件全行选中 listView1.Columns.Add("名称", 200); // 添加名称列 listView1.Columns.Add("路径", 400); // 添加路径列 } private void LoadAttachments() { // 从数据库或其他来源获取附件列表 // 并将每个附件添加到attachments列表中 // Attachment为自定义的类,包含附件的名称、路径等信息 // 将attachments列表中的数据绑定到Listview控件上 foreach (Attachment attachment in attachments) { ListViewItem item = new ListViewItem(attachment.Name); item.SubItems.Add(attachment.Path); listView1.Items.Add(item); } } private void listView1_MouseDoubleClick(object sender, MouseEventArgs e) { if (listView1.SelectedItems.Count == 1) { // 获取选中的附件的路径 string path = listView1.SelectedItems[0].SubItems[1].Text; // 打开附件的查看界面 Process.Start(path); } } private void btnDelete_Click(object sender, EventArgs e) { if (listView1.SelectedItems.Count == 1) { // 获取选中的附件的名称和路径 string name = listView1.SelectedItems[0].SubItems[0].Text; string path = listView1.SelectedItems[0].SubItems[1].Text; // 从attachments列表中删除选中的附件 attachments.RemoveAll(a => a.Name == name && a.Path == path); // 从Listview控件中删除选中的附件 listView1.Items.Remove(listView1.SelectedItems[0]); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值