C#基础知识学习(VS2019)2021-10-26

C#学习

引言

0.0 C# 在visual studio 2019运行环境下代码结构的介绍

1.基本的数据类型

1.1创建C#控制台应用程序并运行

1.点击文件->新建->项目
在这里插入图片描述
2.选择控制台应用程序->点击下一步->
在这里插入图片描述
3.可更改项目名称->项目解决方案->选择合适的架构->点击创建
在这里插入图片描述4.打开后键入以下程序,注释就是数据类型的解释以及注意事项

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//1.using 使用命名空间 使用一些类库文件
//namespace:命名空间:



//命名空间:用来区分类

namespace ConsoleApp1
{//class就是类 
    class Program 
    {
        //static:静态的;void:不返回任何类型;Main:门;string[] args:参数;
        //程序里面也有一个门;不能动,就是程序的入口;参数就是门卫,你需要登记
        static void Main(string[] args)
        {
            //数据类型 ;
            int age = 18;
            float height = 1.8F;//float类型后需要加F;
            double weight = 120;//c#是默认小数是double类型
            char flag = 'Y';//字符类型,使用单引号把数据引起来
            bool biaozhi = true; //bool:真假型
            //字符串类型:
            String name = "zhangsan";//字符串是双引号;
            //WriteLine换行 Write不换行
            Console.Write(name);
            Console.Write(age);
        }
    }
}

5.输入以上程序后点击运行
如何运行:顶部菜单调试里面有一个“启动调试”,快捷键:F5;但是会一闪而过
不想一闪而过:Ctrl+F5L:开始执行不调试

1.2在同一个解决方案里添加新的控制台应用程序

1.光标点击解决方案->添加->新建项目->弹出控制台进行操作即可
在这里插入图片描述

1.3 基本的输入输出语句

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.定义变量并赋值;
            Console.Write("请输入圆的半径:");
            double r;
            r = Console.Read();
            const double PI = 3.1415926;//常量使用const定义;常量名:大写;
            double s = PI * r * r;
            Console.WriteLine(r + "的面积是" + s);
        }
    }
}

1.4 占位符

之前都是使用+连接变量和字符串;
{0},{1}–>变量1,变量2
输出规则:见代码片段
关键词:int.Parse(Console.ReadLine()); 读取的数据强制转化为32整型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            //占位符:两个数相加,减乘除
            int num1, num2;
            Console.WriteLine("请输入数字1:");
            num1 = int.Parse(Console.ReadLine()); //将字符串转换成int类型;
            Console.WriteLine("请输入数字2:");
            num2 = int.Parse(Console.ReadLine()); //将字符串转换成int类型;
            //2.输出规则:{0}对应的是第一个变量,{1}对应的是第二个变量 
            Console.WriteLine("{0}+{1}={2}", num1, num2, (num1 + num2));
            Console.WriteLine("{0}*{1}={2}", num1, num2, (num1 * num2));
           // Console.ReadLine(); //加上这个是防止命令行窗口闪现
        }
    }
}

1.5 字符串和强制类型转换

1.5.1字符串相关的操作

关键操作:是否包含,查找,替换,插入,删除,大小写转换,字符串的格式化

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {

            String str = "今天是个好个天气,我被老师批评了一顿,窝嫩叠";
            Console.WriteLine(str.Contains("窝嫩叠"));//返回是否包含该字符串,TRUE包含 False相反
            Console.WriteLine(str.EndsWith("嫩叠"));//返回是否以什么什么结尾
            Console.WriteLine(str.StartsWith("今天"));//返回是否以什么什么开头
            Console.WriteLine(str.IndexOf("个"));//返回这个字符在第几个 第一次出现的位置
            Console.WriteLine(str.Insert(3, "晴天真是"));//在指定的位置插入字符
            Console.WriteLine(str.LastIndexOf("个"));//返回这个字符在第几个 最后一次出现的位置
            Console.WriteLine(str.Remove(3));//删除位置3之后的所有字符串
            Console.WriteLine(str.Replace("窝嫩叠", "窝嫩爷")); //相应的字符串替换  窝嫩叠 被替换为 窝嫩爷
            Console.WriteLine("Abcd".ToUpper());//转换为大写
            Console.WriteLine("ABCd".ToLower());//转化为小写
            Console.WriteLine(str.Substring(3, 5));//3:起始位置 5;截取的长度
            //格式化字符串:{0},{1},{2}
            //Format(字符串加占位符,值1,值2,...,值n)
            String name = "赵俊杰";
            int age = 88;
            
            String str2 = String.Format("我们的班长是{0},年龄:{1}", name, age);
            //整出来的这个格式化的字符串,控制台可以用,游戏也能用;winform也能用;
            //传值更为方便
            Console.WriteLine(str2);
            Console.Read();

        }
    }
}
1.5.2 类型转换

1.类型转换的形象图解
隐式转换:从小到大可以自动转换 例如:int->double 不会报错
若从大到小转换就会报错 例如:double->int 无法编译 这时就需要强制(显示)转换
显示转换:强制转换,见代码
类型转换:字符串转化为整型 int.Parse(s) s为字符串 见代码
在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp6
{
    /// <summary>
    /// 类型转换:C#类型;整型->浮点型;字符串类型
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            //1.隐式转换(自动转换)
            int age = 20;
            double age2 = age;
            Console.WriteLine(age);
            Console.WriteLine(age2);
            //2.显示转换
            double height = 20.89;
            int height2 = (int)height;//因为double类型比较大
            //在大的类型前面加一个小类型
            Console.WriteLine(height);
            Console.WriteLine(height2);//出现的问题就是数据丢失
            //3.类型转换:
            String s = "22";
            int num2 = int.Parse(s);//parse(字符串参数)
            Console.WriteLine(num2);

            int num3 = Convert.ToInt32(s); 
            Console.WriteLine(num3); //结果输出为22

        }

    }
}

1.6数组格式使用

语法格式:数据类型[] 数组名 = new 数据类型长度[]

int[] age = new int[3];//数组的长度为3;

数组的赋值:
数组名[下标] = 值
score[0] = 88;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp7
{
    class Program
    {
        static void Main(string[] args)
        {
           //1.定义数组长度 
            String[] names = new String[5];
            int[] salary = new int[5];
            // String[] names = new String[5]{"上的","发顺丰","的发射点","阿达","放大"}; //花括号定义数组
            //  for (int i = 0; i < names.Length; i++)
            //  {

            //    Console.WriteLine(names[i]);
            // }
            //2.输入
            for (int i = 0; i < names.Length; i++)
            {
                Console.WriteLine("请输入第{0}个同学的名字:", i + 1);
                names[i] = Console.ReadLine();
                Console.WriteLine("请输入第{0}个同学的工资:", i + 1);
                salary[i] = int.Parse(Console.ReadLine()); //int.Parse(s) 类型转换 将字符型转换为整型
            }

            //3.输出
            for (int i = 0; i < names.Length; i++)
            {
                Console.WriteLine("名字:{0} 工资:{1}", names[i],salary[i]); //用占位符 输出名字和工资
            }

        }
    }
}

2.窗体控件

2.1窗体的概念,窗体应用的创建

windows:视窗;可视化窗口;
2.创建新项目->选择windows窗体应用(.NET Framework)->点击下一步->写上相应的名字和存储位置即可
在这里插入图片描述

2.2在解决方案里新建窗体应用并更改一些属性

1.点击①-项目名>点击②添加->点击③windows窗体->点击④更改window窗体应用的名字
在这里插入图片描述
2.窗体应用的很多东西都可以在属性里改 (右键点击窗体->点击属性即可更改相关内容如窗体的标题text 和BackColor)
在这里插入图片描述
在这里插入图片描述
3.要想启动所写的窗体 需要 在主程序里 new上窗体应用
4.窗体的属性里也可以设置窗体的启动位置:startPosition:CenterScreen 各种东西都可以使用 ;MaxmizeBox:最大化按钮是否可用在这里插入图片描述

2.3 做一个登录界面

2.3.1 工具箱

1.调出工具箱界面->点击菜单栏中的视图->点击工具箱 即可看到工具箱
在这里插入图片描述
2.工具箱的作用 可以添加各种各样的控件 比如 在①处输入label,即可调出label控件 到窗体 ,右键单击即可更改控件的各种属性。
①:工具箱添加搜索栏
②:选择控件 按住crtl 可连续添加控件
③:label控件
④:txtBox控件
⑤:控件的属性,(控件的颜色,位置,名字,以及控件文本显示的内容,注意控件名字和控件文本显示的内容是不一样的)
在这里插入图片描述
按下登录按键后调用的函数

        private void button1_Click(object sender, EventArgs e)
        {
            // MessageBox.Show(txtName.Text);//弹框;
            // MessageBox.Show(txtPwd.Text);//弹框;


            String name = txtName.Text;//定义两个变量,接受用户名文本框和密码框
            String pwd = txtPwd.Text;

            if (name.Equals("83193980") && pwd.Equals("88889999"))
            {
                MessageBox.Show("登录成功");
            }
            else
            {
                MessageBox.Show("登录失败");

            }

        }

2.4列表框和列表组合

2.4.1列表框

1.选中解决方案下的项目->右键单击->添加窗体应用->更改名字为firmListBox创建即可
2.在工具箱中输入 ListBox 在窗体中调出列表框 右击键单击列表框 可以查看属性
在这里插入图片描述
3.点击窗体 进入事件加载(firmListBox_Load()),可以加载如下代码。
重点查看代码: listBox1.Items.Add(“青铜”); listBox1.SelectedIndex listBox1.Items.Count listBox1.SelectedItem

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 WindowsFormsApp1
{
    public partial class firmListBox : Form
    {
        public firmListBox()
        {
            InitializeComponent();
        }

        private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }


        /// <summary>
        /// Load:加载事件;还没有显示出来,先加载到内存;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        private void firmListBox_Load(object sender, EventArgs e)
        {
            //属性
            //1.Item:项目 items:所有项目的集合
            listBox1.Items.Add("青铜");
            listBox1.Items.Add("白银");
            listBox1.Items.Add("黄金");
            listBox1.Items.Add("钻石");
            listBox1.Items.Add("王者");
            //2.
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
        /// <summary>
        /// 在按钮这里双击会出现Click
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnXuanze_Click(object sender, EventArgs e)
        {
            MessageBox.Show("选择的索引:" + listBox1.SelectedIndex);
            //没有选择的时候是-1:从;0开始;到items的长度-1
            MessageBox.Show("列表项目的个数:" + listBox1.Items.Count); //个数;

            MessageBox.Show("你选择的是:" + listBox1.SelectedItem); //选择的项目

        }

        private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}

执行效果如下,注意在执行之前要在主函数里 添加要执行该窗体
在这里插入图片描述

在这里插入图片描述

2.4.2 列表组合

同2.4.1工具栏添加相应控件 注意列表组合控件里要想选项可以不被改变需要在属性里将DropDownStyle里的东西改为
DropDownList.
在这里插入图片描述
运行代码:

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 WindowsFormsApp1
{
    public partial class frmCombox : Form
    {
        public frmCombox()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 窗体的加载事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frmCombox_Load(object sender, EventArgs e)  //comboBox控件加载事件
        {
            comboBox1.Items.Add("省长");
            comboBox1.Items.Add("市长");
            comboBox1.Items.Add("县长");
            comboBox1.Items.Add("村长");
            comboBox1.Items.Add("组长");

        }
        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}

运行结果:
在这里插入图片描述

2.5 图片框

2.5.1工具箱相关控件

1.Panel
2.PictureBox
添加顺序:先添加Panel 再在Panel上添加PictureBox 如图 大框为Panel 里面的PictureBox可以添加图片
在这里插入图片描述

2.5.2做个相册

相关知识点:如何在窗体上按照时间顺序显示多个图片
1.点击解决方案下的项目(windowsFormsApp1)在这里插入图片描述
2.右键单击 弹出如下界面 点击 在文件资源管理器里打开文件夹
在这里插入图片描述

3.打开文件夹后弹出以下界面 依次点击 bin->debug->img(需要新建)->在img里添加要显示的图片->更改图片的名字便于用字符串显示
在这里插入图片描述
4.找到一个按钮控件添加如下代码

    private void button1_Click(object sender, EventArgs e)
        {
            //有这样一个属性;
            // MessageBox.Show(pictureBox1.Image);
            i++;
            //pictureBox1.ImageLocation = "img/bg2.jpg";
            pictureBox1.ImageLocation = String.Format("img/bg{0}.jpg", i); //ImageLocation属性添加图片路径
            if (i == 3)
            {
                i = 0;
            }    

        }

2.6 关于C#(vs2019)代码结构

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;
//1.using 使用命名空间一些类库文件
//2.namespace:命名空间; 区分不同的空间
namespace WindowsFormsApp1
{
    //public:公共 partial:部分 class 类;
    public partial class frmPic : Form 
    {

2.7 窗体间的调用、消息框的使用

功能描述:一个登录界面为窗体1,一个相册界面为窗体2,窗体1登录成功后跳转到窗体2界面,并且隐藏窗体1,窗体2关闭后自动返回窗体1。
调用窗体的相关代码:
new一个窗体控件,然后显示即可。

 Form1 myPic = new Form1(); //对于新窗体Form1 需要new一个窗体过来
       myPic.Show();//显示一下就可以
       this.Hide();  //隐藏这个窗口

窗体的事件添加可以点击 窗体属性栏中的闪电标识。双击点进去 就可看见以下代码。

   private void frmPic_FormClosed(object sender, FormClosedEventArgs e)
        {
            Form1 myPic = new Form1(); //对于窗体需要new一个窗体过来
            myPic.Show();//显示一下就可以
            this.Hide();  //隐藏这个窗口
           //也可以用 Application.exit();应用程序退出。
           //还可以关闭窗口时弹出消息框
             //关闭时弹出对话框 是否关闭
            DialogResult result = MessageBox.Show("是否关闭");
            Console.WriteLine(result);
        }

在这里插入图片描述

2.8 消息框的使用

步骤:1.右键单击窗体–>选择属性–>找到闪电箭头(表示事件)–>添加 FormClosing(见下图 双击就可进入添加代码的界面)
在这里插入图片描述
2.添加如下代码:
代码e: 事件参数对象。见代码第一行 的参数 FormClosingEventArgs e
e.Cancel 在事件 Form2_FormClosed中不能用,因为 该事件表示已经取消,再次询问是否取消就没有意义了。

   private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            //MessageBox:消息框 +20多个重载
            DialogResult result = MessageBox.Show("窝嫩爹", "提示消息", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (result == DialogResult.Yes)
            {
                //要关的事件;取消属性为false;就是关了
                e.Cancel = false;  //e.Cancel在Form2_FormClosed中不能使用,需要在Form2_FormClosing中使用

            }
            else
            {
                e.Cancel = true;

            }

        }

3 链接数据库

3.1数据库链接的准备工作

数据库:MySql SqlSever
ADO.NET 数据库连接工作 C#是.NET平台中的一门语言
access database object
在MySql中的用法
Connection:数据库连接对象 MySqlConnection
C#连接数据库 是为了对数据进行增 删 改 查 MySqlCommand
Command:sql命令执行对象(增删改) MySqlDataAdapater
DataAdapater:数据适配器(数据查询对象)

MySql 是个服务器 是独立的一台机器 需要用网络连接 所以需要有自己的地址
连接字符串: server = localhost port = 3306 database = smx_db(连接哪个数据库) uid=root pwd=123456
服务器在哪,访问服务器中的哪个数据库 以什么身份来连(账户和密码)
open() 打开链接
close() 关闭链接

3.1.1MySql的安装

详细安装教程

3.1.2 C# MySql测试

MySql测试

3.1.3 杂项
3.1.3.4 如何在chart控件上设置表格

在这里插入图片描述

  • 8
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值