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