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++;
    }
}





相关推荐
kylezhao201913 分钟前
C# TreeView 控件详解与应用
c#
FL16238631293 小时前
C# winform部署yolo26-obb旋转框检测的onnx模型演示源码+模型+说明
开发语言·c#
hoiii1879 小时前
C# 俄罗斯方块游戏
开发语言·游戏·c#
chao1898449 小时前
C#实现OMRON FINS-TCP协议与PLC通信
网络·tcp/ip·c#
ytttr87310 小时前
基于C# WinForms实现多窗口通信
开发语言·microsoft·c#
fengfuyao98510 小时前
基于C# WinForm实现的串口调试助手源码
开发语言·c#
weixin_4219947811 小时前
认识数据 - 变量与数据类型
c#·.net·.netcore
mudtools11 小时前
深入理解飞书 Webhook 签名验证:一次踩坑到填坑的完整记录
网络·c#·.net·飞书
Var_al11 小时前
Unity编辑器扩展:标准化UI组件快速创建工具开发指南
ui·unity·c#·编辑器
FL162386312912 小时前
[C#]winform使用纯opencvsharp部署yolo26-cls图像分类的onnx模型
开发语言·分类·c#