Winform126 DataGrIdView ListView

DataGridView

csharp 复制代码
    private void butSumb_Click(object sender, EventArgs e)
    {
        int id=int.Parse(textBoxNum.Text);
        string name=textBoxName.Text.Trim();
        int state=checkBoxState.Checked ? 1 : 0;
        int classId = Convert.ToInt32(comboBoxClass.SelectedValue);
        Image pic = Properties.Resources.屏幕截图_2025_09_01_001901;
        
        StudentInfo stuInfo=new StudentInfo()
        {
        StuId = id,
            StuName =name,
            StuState = state,
            StuPic =pic,
           ClassId = classId
        };
        dataGridView1.DataSource = null;
        if (butSumb.Text == "新增")
        {
            stuList.Add(stuInfo);
            MessageBox.Show("新增成功");

        }else if(butSumb.Text == "修改")
        {
            editStu.StuName = name;
            editStu.StuState = state;
            editStu.StuPic = pic;
            editStu.ClassId = classId;
            MessageBox.Show("修改成功");

        }
        dataGridView1.DataSource= stuList;
    }
}
csharp 复制代码
       private void butAddStudent_Click(object sender, EventArgs e)
       {
           textBoxNum.ReadOnly = true;
           textBoxNum.Clear();
           textBoxName.Clear();
           checkBoxState.Checked = false;
           comboBoxClass.SelectedIndex = 0;
           butSumb.Text = "新增";
       }






csharp 复制代码
 int rowIndex = e.RowIndex;
 StudentInfo stuInfo = dataGridView1.Rows[rowIndex].DataBoundItem as StudentInfo;
 string message = "nums:" + stuInfo.StuId + " name:" + stuInfo.StuName;
 int column = e.ColumnIndex;
 var curCell = dataGridView1.Rows[rowIndex].Cells[column];
 string cellValue = curCell.FormattedValue.ToString();
 //这段代码是从 DataGridView 的单元格点击事件中提取的,主要用于获取当前选中行的绑定数据对象(StudentInfo)以及被点击单元格的显示值。
csharp 复制代码
  if (cellValue == "edit")

  {
      if (stuInfo != null)
      {
          editStu = stuInfo;
          textBoxNum.ReadOnly = true;
          textBoxNum.Text = stuInfo.StuId.ToString();
          textBoxName.Text = stuInfo.StuName;

          if (stuInfo.StuState == 1)
          {
              checkBoxState.Checked = true;
          }
          else
          {
              checkBoxState.Checked = false;
          }
          comboBoxClass.SelectedItem = stuInfo.ClassName;
          pictureBoxPic.Image = stuInfo.StuPic;
          butSumb.Text = "修改";
      }









怎么理解数据绑定

csharp 复制代码
        private void butBind_Click(object sender, EventArgs e)
        {
            stuList = new List<StudentInfo>();
            stuList.Add(new StudentInfo() { StuId = 01, StuName = "xiaoA", StuState = 1, ClassId = 1, StuPic = Properties.Resources.屏幕截图_2025_08_04_000637 });
            stuList.Add(new StudentInfo() { StuId = 02, StuName = "xiaoB", StuState = 1, ClassId = 2, StuPic = Properties.Resources.屏幕截图_2025_08_04_001149 });
            stuList.Add(new StudentInfo() { StuId = 03, StuName = "xiaoC", StuState = 0, ClassId = 3, StuPic = Properties.Resources.屏幕截图_2025_08_04_002238 });
            stuList.Add(new StudentInfo() { StuId = 04, StuName = "xiaoD", StuState = 1, ClassId = 5, StuPic = Properties.Resources.屏幕截图_2025_08_04_000637 });
            stuList.Add(new StudentInfo() { StuId = 05, StuName = "xiaoE", StuState = 0, ClassId = 1, StuPic = Properties.Resources.屏幕截图_2025_08_04_002238 });
            stuList.Add(new StudentInfo() { StuId = 06, StuName = "xiaoF", StuState = 1, ClassId = 4, StuPic = Properties.Resources.屏幕截图_2025_08_04_000637 });
            stuList.Add(new StudentInfo() { StuId = 07, StuName = "xiaoG", StuState = 0, ClassId = 1, StuPic = Properties.Resources.屏幕截图_2025_08_04_000637 });

            List<ClassInfo> classList = new List<ClassInfo>();
            classList.Add(new ClassInfo() { ClassId = 1, ClassName = "Class 1" });
            classList.Add(new ClassInfo() { ClassId = 2, ClassName = "Class 2" });
            classList.Add(new ClassInfo() { ClassId = 3, ClassName = "Class 3" });
            classList.Add(new ClassInfo() { ClassId = 4, ClassName = "Class 4" });
            classList.Add(new ClassInfo() { ClassId = 5, ClassName = "Class 5" });

            DataGridViewComboBoxColumn cboClassCol = dataGridView1.Columns["ColumnClass"]
as DataGridViewComboBoxColumn;
            cboClassCol.DataSource = classList;
            ColumnClass.DisplayMember = "ClassName";
            ColumnClass.ValueMember = "ClassId";
            dataGridView1.AutoGenerateColumns = false;
            dataGridView1.DataSource = stuList;

        }





listview











可点击







点击checkbox无效 因为分组规则问题



注意:循环中的索引 i与 dicFiles的键严格对应(因为填充时 i是顺序递增的),因此 dicFiles[i]能正确检索路径。如果索引 i不存在于字典中,会抛出 KeyNotFoundException,但代码中通过循环范围控制避免了这一问题

csharp 复制代码
 foreach (ListViewGroup group in listView2.Groups)
 {
     group.HeaderAlignment = HorizontalAlignment.Center;
 }
csharp 复制代码
     listView2.Items.Clear();
     listView2.ShowGroups = false;
     if (imageList1.Images.Count > 0)
     {
         for (int i = 0; i < imageList1.Images.Count; i++)
         {
             string fileName = imageList1.Images.Keys[i];
             ListViewItem li = new ListViewItem();
             li.Text = fileName;
             li.ImageIndex = i;
             listView2.Items.Add(li);
         }

     }



这段代码组合起来,实现了一个标准的初始化或刷新 ListView显示内容的过程:先清空旧项,然后根据数据源(这里是 imageList1)逐个创建新项并添加。

csharp 复制代码
string[] files = Directory.GetFiles(path);
int i = 0;
foreach (string fpath in files)
{
    if (fileType.Contains(Path.GetExtension(fpath)))
    {
        Image img = Image.FromFile(fpath);
        string keyName = Path.GetFileNameWithoutExtension(fpath);
        imageList1.Images.Add(keyName, img);
        imageList2.Images.Add(keyName, img);
        dicFiles.Add(i, fpath);
        i++;
    }
}





相关推荐
csdn_aspnet3 小时前
C# .NETCore json字符串压缩为一行
c#·json·.netcore
斯内科3 小时前
C#验证拉马努金圆周率公式
c#·拉马努金圆周率
FuckPatience3 小时前
C# BinarySearch 的返回值
开发语言·数据结构·c#
27669582924 小时前
闪购商家端 mtgsig
java·python·c#·node·c·mtgsig·mtgsig1.2
张人玉16 小时前
技术开发文档:MES 系统与西门子 PLC 通信软件集成方案
https·c#·plc·mes系统·西门子s7
地球驾驶员19 小时前
NX二次开发C#----C#和C++的二次开发程序如何签名?
c#
小码编匠20 小时前
C# 实现网络文件传输:打造稳定可靠的工业级工具
后端·c#·.net
MM_MS20 小时前
SQL Server数据库和Visual Studio (C#)联合编程
开发语言·数据库·sqlserver·c#·visual studio
c#上位机1 天前
halcon计算区域骨架
图像处理·人工智能·计算机视觉·c#·halcon