winform2

 12.TabControl

导航控制条
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace zhiyou_winform_TabControl
{

    /*
MultiLine,是否允许多行选项卡
AlignMent,控制选项卡的显示位置,可以在TabControl的上、下、左、右显示
Appearance,控制选项卡的外观
ItemSize,控制选项卡的高度和宽度(注意不是TabControl的宽和高)
ItemSize的宽度设置后还需要设置SizeMode,否则选项卡的宽度不变,
 只有高度随设定的高度调整
     */
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //添加一个选项
            AddTabPage();
            //设置当前选项卡默认的选项
            tabControl1.SelectedIndex = 2;
            //选项卡绑定触发事件
            tabControl1.TabPages[0].Enter += tabPage1_Event;
            tabControl1.TabPages[1].Enter += tabPage2_Event;

            //tabControl绑定事件
            tabControl1.Selected += TabControlEventHandler;

        }

        //手动添加选项卡
        private void AddTabPage(){
            // 通过代码添加一个简单TabPage
            TabPage tab1 = new TabPage();
            tab1.Text = "选项卡";
            tab1.Name = "tp1";
            tab1.BackColor = Color.Orange;
            if (!tabControl1.TabPages.ContainsKey(tab1.Name))//如果有就不再添加
            {
                tabControl1.TabPages.Add(tab1);
              
            }
        }
        //手动删除选项卡
        private void RemoveTabPage() {
            tabControl1.TabPages.Remove(tabPage1);//方法1
            tabControl1.TabPages.RemoveAt(1);//方法2
            tabControl1.TabPages.RemoveByKey("用户管理");//方法3

        }
        private void tabPages() {

            //所有选项卡的集合
            //  tabControl1.TabPages
            //某个选项卡的集合  可以找到对应选项卡里的子元素
            TabPage firstTabPage = tabControl1.TabPages[0];
            Console.WriteLine(firstTabPage.Controls.Count);
        }

        private void SelectTabPage() {

            //设置选中页的三种方法
            tabControl1.SelectedIndex = 0;
           // tabControl1.SelectedTab = tabPage1;
           // tabControl1.SelectTab(tabPage1);
        }
        private void tabPage1_Event(object sender, EventArgs e)
        {
            MessageBox.Show("111");
            
        }

        private void tabPage2_Event(object sender, EventArgs e)
        {
            MessageBox.Show("222");
        }
    

        public void TabControlEventHandler(object sender, TabControlEventArgs e)
        {

            MessageBox.Show("TabControl");
        }
    }
}

  13.窗体传值


        //方式一: 使用公共静态字段传值   双向传值
        //静态字段当类创建时 会一直在内存中 存在一个
        public static string staticID = "静态字段传值"
        //方式二: 使用公共实例字段传值   双向传值
    
        //方式三   委托(事件)传值    同时传值多个页面

14.DataGridView

namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {

        //dataGridView1.Rows   所有行的集合
        //dataGridView1.Rows[0].Cells  第一行中cell的集合
        //dataGridView1.SelectedRows  选中行的集合
        //dataGridView1.CurrentRow  选中行的对象
        //dataGridView1.CurrentRow.Index 选中行的索引值
        //dataGridView1.Rows.RemoveAt  删除某一行
        //dataGridView1.SelectAll();/选择所有行
        //dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[1];
        //dataGridView1.Columns  所有列的集合
        //dataGridView1.ClearSelection();去除选择
        public Form1()
        {
            InitializeComponent();
        }
        //添加一行数据
        private void button1_Click(object sender, EventArgs e)
        {
            //得到总行数
            int num = dataGridView1.Rows.Count;


            Console.WriteLine(num);
            //向第一行后插入一行数据
            //0代表第一行  1代表插入行的数量
            // dataGridView1.Rows.Insert(num-1, 1);
            dataGridView1.Rows.Add(1);
            //写第所有行第一列数据//插入显示序号
            this.dataGridView1.Rows[num - 1].Cells[0].Value = num;
            //写第一行第二列数据//插入性别
            this.dataGridView1.Rows[num - 1].Cells[1].Value = "aa";
            //写第一行第三列数据//插入性别
            this.dataGridView1.Rows[num - 1].Cells[2].Value = "bb";
            //写第一行第四列数据//插入班级
            this.dataGridView1.Rows[num - 1].Cells[3].Value = "cc";
           

            //去除选择
            //  dataGridView1.ClearSelection();


        }
            

        //获取选择行的内容
        private void button3_Click(object sender, EventArgs e)
        {
            //判断是否选中一行
            if (dataGridView1.SelectedRows.Count == 0)
            return;
            
            
            //获取选择箭头指向的行的索引
            int index = dataGridView1.CurrentRow.Index;
         
            string line = "";

            //this.dataGridView1.Rows[index].Cells.Count 获取当前行有多少个单元格
            for (int i = 0; i < dataGridView1.ColumnCount; i++)
            {
                line += dataGridView1.Rows[index].Cells[i].Value.ToString();
            }
            Console.WriteLine(line);


           


        }
        //获取所有行的内容
        private void button4_Click(object sender, EventArgs e)
        {
            string all_data = "";
            for (int i = 0; i < dataGridView1.Rows.Count-1; i++)//行循环
            {
                for (int j = 0; j < dataGridView1.Columns.Count; j++) //列循环
                {
                   all_data += dataGridView1.Rows[i].Cells[j].Value.ToString();
                   
                }
            }
            Console.WriteLine(all_data);

        }
       
        //删除选择的一行
        private void button5_Click(object sender, EventArgs e)
        {
            //判断是否选中一行
            if (dataGridView1.SelectedRows.Count == 0)
                return;
            //删除一行
            dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index);

        }
        //删除多行
        private void button6_Click(object sender, EventArgs e)
        {
            //dataGridView1.SelectedRows 选择的行 集合
            foreach (DataGridViewRow row in dataGridView1.SelectedRows)
            {
                if (!row.IsNewRow)
                {
                    dataGridView1.Rows.Remove(row);
                }
            }

        }

        //选中单元格
        private void button9_Click(object sender, EventArgs e)
        {
            //CurrentCell
            dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[1];
        }
        //删除行
        private void button7_Click(object sender, EventArgs e)
        {
            //删除所有行
            dataGridView1.Rows.Clear();
        }
    }
}

15.DataGridView数据源绑定

数据模型类

 internal class People
    {

        public string PeopleName { get; set; }
        public string PeopleAge { get; set;}
        public string PeopleHeight { get; set;}
        public string PeopleWeight { get; set; }
        public string PeopleNumber { get; set; }


     
    }


    public partial class Form1 : Form
    {
        // BindingList 和  dataGridView1.DataSource  绑定的集合
        // 当集合中数据改变时 主动刷新 dataGridView1
        BindingList<People> elist = new BindingList<People>();
        public Form1()
        {
            InitializeComponent();
            //DataSource 数据源
            dataGridView1.DataSource = elist;

        }


        private void button1_Click(object sender, EventArgs e)
        {
            //1.设置list  创建 People实体类 对象
           // List<People> elist = new List<People>();
            for (int i = 0; i <= 9; i++)
            {


                //People people = new People() { };
               // people.PeopleAge = 18;
                //对象初始化器
                elist.Add(new People()
                {
                    PeopleName = "员工" + i,
                    PeopleAge = "12" + i,
                    PeopleHeight = "身高" + i,
                    PeopleNumber = "编号" + i,
                    PeopleWeight = "体重" + i,

                });
            }


            
         
        }


        //zhuijia表格
        private void button2_Click(object sender, EventArgs e)
        {
            //对象初始化器
            elist.Add(new People()
            {
                PeopleName = "张三",
                PeopleAge = "18",
                PeopleHeight = "身高180" ,
                PeopleNumber = "编号20" ,
                PeopleWeight = "体重188" ,

            });
        }

        private void button3_Click(object sender, EventArgs e)
        {
            elist.RemoveAt(0);
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/776054.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

发现CPU占用过高,该如何排查解决?

1.使用top命令 查看cpu占用最多的进程 2.使用 top -H -p pid 发现有两个线程占用比较大 3.将线程id转换为16进制 使用命令 printf 0x%x\n pid 4.使用 jstack pid | grep 线程id(16进制&#xff09; -A 20 &#xff08;显示20行&#xff09; 根据代码显示进行错误排查

2024年7月5日 (周五) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键&#xff0c;实现一键唤起、一键隐藏的 Windows 工具&#xff0c;并且支持窗口动态绑定快捷键&#xff08;无需设置自动实现&#xff09;。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《乐高地平线大冒险》为何不登陆…

娱乐圈惊爆已婚男星刘端端深夜幽会

【娱乐圈惊爆&#xff01;已婚男星刘端端深夜幽会&#xff0c;竟是《庆余年》二皇子“戏外风云”】在这个信息爆炸的时代&#xff0c;娱乐圈的每一次风吹草动都能瞬间点燃公众的热情。今日&#xff0c;知名娱乐博主刘大锤的一则预告如同投入湖中的巨石&#xff0c;激起了层层涟…

关于下载obsidian SimpRead Sync中报错的问题

参考Kenshin的配置方法&#xff0c;我却在输入简悦的配置文件目录时多次报错。 bug如下&#xff1a; 我发现导出来的配置文件格式如下&#xff1a; 然后根据报错的bug对此文件名进行修改&#xff0c;如下&#xff1a; 解决。

Java数据结构-树的面试题

目录 一.谈谈树的种类 二.红黑树如何实现 三.二叉树的题目 1.求一个二叉树的高度&#xff0c;有两种方法。 2.寻找二叉搜索树当中第K大的值 3、查找与根节点距离K的节点 4.二叉树两个结点的公共最近公共祖先 本专栏全是博主自己收集的面试题&#xff0c;仅可参考&#xf…

暑假前端知识速成【CSS】系列一

坚持就是希望&#xff01; 什么是CSS? CSS 指的是层叠样式表* (Cascading Style Sheets)CSS 描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素CSS 节省了大量工作。它可以同时控制多张网页的布局外部样式表存储在 CSS 文件中 *&#xff1a;也称级联样式表。 CSS语法 在此例…

微信小程序的智慧物流平台-计算机毕业设计源码49796

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3研究方法 1.4开发技术 1.4.1 微信开发者工具 1.4.2 Node.JS框架 1.4.3 MySQL数据库 1.5论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 用户登录流程 2.2.2 数据删除流程 2.3 系统功能分…

Windows 上帝模式是什么?开启之后有什么用处?

Windows 上帝模式是什么 什么是上帝模式&#xff1f;Windows 上帝模式&#xff08;God Mode&#xff09;是一个隐藏的文件夹&#xff0c;通过启用它&#xff0c;用户可以在一个界面中访问操作系统的所有管理工具和设置选项。这个功能最早出现在 Windows Vista 中&#xff0c;并…

【K8s】专题六(4):Kubernetes 稳定性之初始化容器

以下内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01;如果对您有帮助&#xff0c;烦请点赞、关注、转发&#xff01;欢迎扫码关注个人公众号&#xff01; 目录 一、基本介绍 二、主要特点 三、资源清单&#xff08;示例&#xff09; 一、基本介绍 初…

小学英语语法

目录 a和an的用法名词的单复数be动词和人称代词&#xff08;主格&#xff09;指示代词形容词物主代词名词所有格双重所有格方位介词some&#xff0c;any和no的用法How many和How much的用法情态动词can的用法祈使句人称代词&#xff08;宾格&#xff09;常见实义动词的用法一般…

【MySQL备份】Percona XtraBackup总结篇

目录 1.前言 2.问题总结 2.1.为什么在恢复备份前需要准备备份 2.1.1. 保证数据一致性 2.1.2. 完成崩溃恢复过程 2.1.3. 解决非锁定备份的特殊需求 2.1.4. 支持增量和差异备份 2.1.5. 优化恢复性能 2.2.Percona XtraBackup的工作原理 3.注意事项 1.前言 在历经了详尽…

深入理解 Webhook 与 API 的区别

作为人类&#xff0c;我们希望技术能帮助我们更快捷、更便捷地与更多人交流。但要实现这一目标&#xff0c;我们首先需要找到一种方法让技术能够彼此对话。 这就是 API 和 Webhook 的用武之地。 API 和 Webhook 都能够促进两个应用之间的数据同步和传递。然而&#xff0c;它们…

MySQL视图教程(03):列出视图

文章目录 MySQL 列出视图语法使用场景示例结论 MySQL 列出视图 MySQL 是一种流行的关系型数据库管理系统&#xff0c;用于创建和管理数据库中的表、视图等对象。在 MySQL 中&#xff0c;视图是一种虚拟表&#xff0c;可以从一个或多个实际表中检索数据&#xff0c;并根据特定的…

springboot整合Camunda实现业务

1.bean实现 业务 1.画流程图 系统任务&#xff0c;实现方式 2.定义bean package com.jmj.camunda7test.process.config;import lombok.extern.slf4j.Slf4j; import org.camunda.bpm.engine.TaskService; import org.camunda.bpm.engine.delegate.JavaDelegate; import org.…

【一】m2芯片的mac中安装ubuntu24虚拟机集群

文章目录 1. 虚拟机配置2. 复制虚拟机2.1 修改主机名2.2 修改网络 1. 虚拟机配置 在官方网站下载好ubuntu24-arm版镜像开始安装&#xff0c;安装使用VMWare Fusion的社区免费授权版,使用一台m2芯片的mac电脑作为物理机平台。 为什么选择ubuntu24&#xff1f;因为centOS7目前已…

php简单商城小程序系统源码

&#x1f6cd;️【简单商城小程序】&#x1f6cd;️ &#x1f680;一键开启&#xff0c;商城搭建新体验&#x1f680; 你还在为繁琐的商城搭建流程头疼吗&#xff1f;现在&#xff0c;有了简单商城系统小程序&#xff0c;一切变得轻松又快捷&#xff01;无需复杂的编程知识&a…

CTF常用sql注入(三)无列名注入

0x06 无列名 适用于无法正确的查出结果&#xff0c;比如把information_schema给过滤了 join 联合 select * from users;select 1,2,3 union select * from users;列名被替换成了1,2,3&#xff0c; 我们再利用子查询和别名查 select 2 from (select 1,2,3 union select * f…

为什么使用StartAI文生图进行AI绘画?

什么是文生图&#xff1f; 文生图是AIGC中一种先进的图像生成技术&#xff0c;它能够根据用户输入的文字描述&#xff0c;智能地生成相应的图像。无论是抽象的概念&#xff0c;还是具体的物体&#xff0c;文生图都能够以惊人的准确性和艺术性呈现出来。 StartAI文生图如何进行…

南方航空阿里v2滑块验证码逆向分析思路学习

目录 一、声明&#xff01; 二、介绍 三、请求流程分析&#xff1a; 1.拿验证码 2.提交第一次设备信息 3.提交第二次设备信息 4.提交验证 ​编辑 四、接口响应数据分析&#xff1a; 1.拿验证码 2.提交第一次设备信息 3.提交第二次设备信息 4.提…

暑期大数据人工智能学习-企业项目试岗实训开营

暑期企业项目-试岗实训活动全面开启啦 跟张良均老师学大数据人工智能 不仅可以提供实习证明&#xff0c;有需要话也可以提供实习鉴定报告 √54个热门案例拆解 √40项目实战课程 √27个项目可选 √4个项目方向