winform2

news2024/10/7 16:16:22

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爆!Java高级特性之Stream API详解

爆&#xff01;Java高级特性之Stream API详解 Java 8引入的Stream API可以说是一个革命性的特性,让我们告别了又臭又长的for循环,迎来了函数式编程的春天。今天就让我们来一起深入了解这个让人又爱又恨的Stream API吧! 什么是Stream? Stream就像一个高级的迭代器,允许我们以…

应用了网络变压器的PC网卡连接转换器后不好连网,有掉线现象,但外接路由器无问题,可能是什么原因?

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;今天分享的是应用了网络变压器的PC网卡连接转换器后不好连网&#xff0c;有掉线现象&#xff0c;但外接路由器无问题&#xff0c;可能是什么原因呢&#xff1f;如何解决呢&#xff1f; 首先&#xff0c;我们要了解传…

无人机常见故障及维修方法详解

一、无人机故障识别与处理原则 无人机故障识别是维修的第一步&#xff0c;要求操作人员具备基本的无人机系统知识和故障识别能力。在识别故障时&#xff0c;应遵循“先易后难、先外后内、先软件后硬件”的原则。一旦识别出故障&#xff0c;应立即停止飞行&#xff0c;避免进一…

【VUE基础】VUE3第三节—核心语法之computed、watch、watcheffect

computed 接受一个 getter 函数&#xff0c;返回一个只读的响应式 ref 对象。该 ref 通过 .value 暴露 getter 函数的返回值。它也可以接受一个带有 get 和 set 函数的对象来创建一个可写的 ref 对象。 创建一个只读的计算属性 ref&#xff1a; <template><div cl…

Java项目:基于SSM框架实现的校园快递代取管理系统【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的校园快递代取管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

树莓派+舵机+pca9685+usb摄像头制作二维云台,图像追踪

使用树莓派+舵机+pca9685+usb摄像头制作二维云台,图像追踪 为什么使用pca9685驱动舵机,而不使用树莓派自带的引脚驱动舵机呢? 因为树莓派无法产生稳定的pwm波,容易造成舵机的抖动 我使用的是树莓派+ubuntu系统+pca9685 1.首先在ubuntu系统中安装相关依赖 sudo apt insta…

海尔智家:科技优秀是一种习惯

海尔智家&#xff1a;科技优秀是一种习惯 2024-06-28 15:19代锡海 6月24日&#xff0c;2023年度国家科学技术奖正式揭晓。海尔智家“温湿氧磁多维精准控制家用保鲜电器技术创新与产业化”项目荣获国家科学技术进步奖&#xff0c;成为家电行业唯一牵头获奖企业。 很多人说&…

odoo 物联网 设备数据采集方案

图一 架构手稿(许老师专属) 图二 架构简图 部署 方案一&#xff1a; odoo业务数据库与设备采集数据库使用一个instance。 缺点&#xff1a;重启pg服务相互影响。 方案二&#xff1a; odoo业务数据库与设备采集数据库独立部署&#xff0c;使用两个instance。 优点&#xff1a;…

VSCode远程服务器

一、安装VSCode Windows安装Visual Studio Code(VS Code)-CSDN博客 二、VSCode中安装Remote-SSH插件 1、在应用商店中搜索Remote - SSH并安装 2、安装后会出现下面标注的图标 三、开始SSH连接 1、点击加号&#xff0c;创建SSH连接 2、输入地址&#xff0c;格式是&#xff1a;…

java集合(1)

目录 一.集合概述 二. 集合体系概述 1. Collection接口 1.1 List接口 1.2 Set接口 2. Map接口 三. ArrayList 1.ArrayList常用方法 2.ArrayList遍历 2.1 for循环 2.2 增强for循环 2.3 迭代器遍历 一.集合概述 我们经常需要存储一些数据类型相同的元素,之前我们学过…

RocketMQ-订阅一致及解决方案

背景 这里借用Rocketmq官方的一句话来描述订阅关系一致: 订阅关系一致指的是同一个消费者分组Group ID下&#xff0c;所有Consumer实例所订阅的Topic和Tag必须完全一致。如果订阅关系不一致&#xff0c;可能导致消息消费逻辑混乱&#xff0c;消息被重复消费或遗漏。 具体的问题…

MySQL中mycat与mha应用

目录 一.Mycat代理服务器 1.Mycat应用场景 2.mycat安装目录结构说明 3.Mycat的常用配置文件 4.Mycat日志 5.mycat 实现读写分离 二.MySQL高可用 1.原理过程 2.MHA软件 3.实现MHA 一.Mycat代理服务器 1.Mycat应用场景 Mycat适用的场景很丰富&#xff0c;以下是几个典型…

【Java11】变量的初始化和内存中的运行机制

成员变量的初始化和内存中的运行机制 系统加载类或创建类的实例时&#xff0c;系统自动为成员变量分配内存空间&#xff0c;然后自动为成员变量指定初始值。 class Person {public String name; // 实例变量public static int eyeNum; // 类变量 }var p1 Person(); var p2 …

【unity实战】Unity中使用A*寻路+有限状态机制作一个俯视角敌人AI

最终效果 文章目录 最终效果前言A*寻路插件介绍下载导入AI插件生成寻路网格节点的类型障碍物寻路测试A*只打印报错信息 代码控制寻路动画配置敌人状态机各种状态脚本效果完结 前言 前面做过有限状态机制作一个敌人AI&#xff1a;【unity实战】在Unity中使用有限状态机制作一个…

【Odoo开源ERP】别把ERP与进销存软件混为一谈

导读&#xff1a;企业使用ERP软件能够实现管理升级&#xff0c;多方信息集成&#xff0c;按照既定策略逻辑运算&#xff0c;生成计划建议&#xff0c;减少人力成本&#xff0c;提高准确率的同时提高经营能力。 ERP&#xff0c;是MRP II的下一代软件&#xff0c;除了MRP II已有的…

WEB安全-靶场

1 需求 2 语法 3 示例 男黑客|在线渗透测试靶场|网络安全培训基地|男黑客安全网 4 参考资料

三万字带你一遍跑通uer

三万字带你一遍跑通uer 参考文档 今天给大家介绍个非常强大的项目uer&#xff0c;集成了许多可以做自然语言的东西&#xff0c;效果的话也非常好&#xff0c;很适合企业级的应用&#xff01; 1. 先将项目uer从github拉取下来&#xff08;zip或git都ok&#xff09; 2. 用pycha…

Vue88-Vuex中的mapActions、mapMutations

一、mapMutations的调用 此时结果不对&#xff0c;因为&#xff1a;若是点击事件不传值&#xff0c;默认传的是event&#xff01;&#xff0c;所以&#xff0c;修改如下&#xff1a; 解决方式1&#xff1a; 解决方式2&#xff1a; 不推荐&#xff0c;写法麻烦&#xff01; 1-…

【代码大全2 选读】看看骨灰级高手消灭 if-else 逻辑的瑞士军刀长啥样

文章目录 1 【写在前面】2 【心法】这把瑞士军刀长啥样3 【示例1】确定某个月份的天数&#xff08;Days-in-Month Example&#xff09;4 【示例2】确定保险费率&#xff08;Insurance Rates Example&#xff09;5 【示例3】灵活的消息格式&#xff08;Flexible-Message-Format …

基于深度学习的图像背景剔除

在过去几年的机器学习领域&#xff0c;我一直想打造真正的机器学习产品。 几个月前&#xff0c;在参加了精彩的 Fast.AI 深度学习课程后&#xff0c;似乎一切皆有可能&#xff0c;我有机会&#xff1a;深度学习技术的进步使许多以前不可能实现的事情成为可能&#xff0c;而且开…