C# 如何在windows窗体应用程序中显示复杂结果以及复选框

C# 如何在windows窗体应用程序中显示复杂结果以及复选框,c#,winforms,C#,Winforms,您好,我是windows窗体应用程序的新手。 我有一个场景,在这个场景中,我可以动态地获取某些文件的名称和路径,并想让用户选择他们不需要的文件并删除它们。 我希望它以表格格式显示:- 在这里的“删除我想要”复选框下,用户可以单击该复选框,在底部我将创建一个按钮,该按钮将获取所有选定的文件并调用“删除逻辑”。 如何从UI实现这一点,我应该使用哪种布局,以及如何在其中再创建一个元素。尝试以下操作: using System; using System.Collections.Generic; us

您好,我是windows窗体应用程序的新手。 我有一个场景,在这个场景中,我可以动态地获取某些文件的名称和路径,并想让用户选择他们不需要的文件并删除它们。 我希望它以表格格式显示:-

在这里的“删除我想要”复选框下,用户可以单击该复选框,在底部我将创建一个按钮,该按钮将获取所有选定的文件并调用“删除逻辑”。 如何从UI实现这一点,我应该使用哪种布局,以及如何在其中再创建一个元素。

尝试以下操作:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        static DataTable dt = new DataTable();
        public Form1()
        {
            InitializeComponent();

            dt.Columns.Add("SI No", typeof(int));
            dt.Columns.Add("Delete", typeof(string));
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Path", typeof(string));

            dt.Rows.Add(new object[] { 1, "[]", "a", "C:\\a" });
            dt.Rows.Add(new object[] { 2, "[]", "b", "C:\\b" });
            dt.Rows.Add(new object[] { 3, "[]", "c", "C:\\c" });
            dt.Rows.Add(new object[] { 4, "[]", "d", "C:\\d" });
            dt.Rows.Add(new object[] { 5, "[]", "e", "C:\\e" });
            dt.Rows.Add(new object[] { 6, "[]", "f", "C:\\f" });

            dataGridView1.DataSource = dt;

            dataGridView1.CellClick +=new DataGridViewCellEventHandler(dataGridView1_CellClick);

        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int row = e.RowIndex;
            int col = e.ColumnIndex;

            if ((col == 1) && (dt.Rows.Count > 0))
            {
                dt.Rows[row].Delete();
                dataGridView1.DataSource = null;
                dataGridView1.DataSource = dt;
            }

        }
    }
}
使用按钮

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        static DataTable dt = new DataTable();
        public Form1()
        {
            InitializeComponent();
            dt.Columns.Add("SI No", typeof(int));
            dt.Columns.Add("Delete", typeof(Boolean));
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Path", typeof(string));

            dt.Rows.Add(new object[] { 1, false, "a", "C:\\a" });
            dt.Rows.Add(new object[] { 2, false, "b", "C:\\b" });
            dt.Rows.Add(new object[] { 3, false, "c", "C:\\c" });
            dt.Rows.Add(new object[] { 4, false, "d", "C:\\d" });
            dt.Rows.Add(new object[] { 5, false, "e", "C:\\e" });
            dt.Rows.Add(new object[] { 6, false, "f", "C:\\f" });

            dataGridView1.DataSource = dt;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = dt.Rows.Count - 1; i >= 0; i--)
            {
                if ((Boolean)(dt.Rows[i][1]) == true)
                {
                    dt.Rows[i].Delete();
                }
            }
            dataGridView1.DataSource = null;
            dataGridView1.DataSource = dt;
        }
    }
}

ListView控件包含复选框布尔值,允许您在ListView中有一列复选框;相关:定义thosde单元格的列类型。有效选项包括按钮、复选框、组合框、图像、链接和文本框。您还可以使用DataGridView控件。如果将文件详细信息添加到列表或数据表中,处理起来也会更直接;?所以OP有一个复选框列。我想这可能有点混乱。我想了一会儿。我不知道这是指什么。OP正在寻找一个UI,该UI允许选择稍后将删除的文件。如果删除该行,可能会造成混淆。此外,由于您正在从DataTable中删除数据,因此不需要重置数据源。这可能适用于对象列表。是的,答案解决了我所面临的设计问题。单击要删除的行的复选框并按下按钮后,如何仅获取单击该复选框的行?