C#WinForm基础编程(二)

简介: C#WinForm基础编程

C#WinForm基础编程(一)https://developer.aliyun.com/article/1433699


四、数组的删除

示例4:从数组中删除给出的数字

int[] arr = new int[] {8,6,9,5,73,11,56,87 };
Console.WriteLine("请输入你要删除的元素");
int num = int.Parse(Console.ReadLine());
int index = -1;
for(int i = 0; i < arr.Length; i++)
{
    if (num == arr[i])//查找要删除的元素
    {
        index = i;
        break;
    }
}
if (index != -1)
{
    for(int j = index; j < arr.Length-1; j++)//注意j是要小于arr.length-1;
    {
        arr[j] = arr[j + 1];//将从删除位置开始的数组元素依次前移
    }
    arr[arr.Length - 1] = 0;//将数组最后一个元素置成0
}else
{
    Console.WriteLine("没有你要删除的元素");
}
 ///
for(int i = 0; i < arr.Length; i++)
{
    Console.Write(arr[i]+"\t");
}

示例5:在顺序数组中插入一个数,要求插入后仍然保持数组的升序排列。

int[] arr = new int[] { 10, 20, 30, 40, 50, 60 ,0};
Console.WriteLine("请输入要插入的数字");
int num = int.Parse(Console.ReadLine());
int index = arr.Length-1 ;
for(int i = 0; i < arr.Length; i++)
{
    if (arr[i] > num)
    {
         index = i;
         break;
    }
}
for(int j = arr.Length - 2; j >= index; j--)
{
   arr[j + 1] = arr[j];
}
arr[index] = num;
for (int i = 0; i < arr.Length; i++)
{
    Console.Write(arr[i] + "\t");
}

视频课:https://edu.51cto.com/course/20906.html

第五章:类和对象

什么是对象

描述一个对象:

姓名:欧阳锋

性别:男

家住:深圳

。。。。属性;

弹吉他;

跳街舞;

。。。。能力

欧阳锋外传——封装

对象:是组成世界万物的具体个体
类:是有相同特点的个体的抽象概念
第一节:创建类和对象
创建类:
class Person
{
    public string name;
    public string sex;
    public int age;
    public void intro()
    {
        Console.WriteLine("我是:"+name+"性别:"+sex+",今年"+age+"岁了");
    }
}
创建对象:
Person p = new Person();
p.name = "令狐冲";
p.sex = "男";
p.age = 8;
Console.WriteLine(p.name);
p.intro();

在图形界面造人

string name = txtName.Text;
string sex = txtSex.Text;
int age = int.Parse(txtAge.Text);
Person per = new Person();
per.name = name;
per.sex = sex;
per.age = age;
per.intro();
构造方法:

构造方法是创建该类对象的方法,如果类中没有构造方法,系统会给一个默认(无参数)的构造方法

构造方法的结构是:public 类名(){}

一个类中一般需要有两个构造方法,一个是空参数(默认)的构造方法,一个是带参数的构造方法。

public Person(){  }
   public Person(string name, string sex, int age)
   {
       this.name = name;//this代表当前类的对象
       this.sex = sex;
       this.age = age;
   }
Person p = new Person("张无忌","男",12);
 Console.WriteLine(p.name);
 p.intro();

第二节:定义一般方法

方法的种类

方法分类:

一、无参数无返回值
public void intro()
 {
       Console.WriteLine("我是:"+name+"性别:"+sex+",今年"+age+"岁了");
 }
二、有参数无返回值
public void playGame(int level)
{
    if (level > 10)
    {
        Console.WriteLine("打败boss");
    }else
    {
        Console.WriteLine("game over");
    }  
}
三、无参数有返回值
public int getRandom()
{
     Random ran = new Random();
     return ran.Next(0,100);            
}

调用:

Student stu = new Student("王宗月","男",20);
 stu.intro();
 stu.playGame(50);
 int num=stu.getRandom();
 Console.WriteLine("随机数是:"+num);
 Console.Read();
四、有参数有返回值
public double plus(double num1,double num2)
{
    return num1 + num2;
}

方法调用:

Person per = new Person();
 double n1 = double.Parse(txtNum1.Text);
 double n2 = double.Parse(txtNum2.Text);
 double result=per.plus(n1,n2);
 MessageBox.Show(""+result,"计算结果是:");

五、类的完整代码:

class Person
{
    public string name;
    public string sex;
    public int age;
    public void intro()//无参数无返回值
    {
        Console.WriteLine("我是:"+name+"性别:"+sex+",今年"+age+"岁了");
    }
    public void playGame(int level)//无参数有返回值
    {
        if (level > 10)
        {
            Console.WriteLine("打败boss");
        }else
        {
            Console.WriteLine("game over");
        }  
    }
    public double plus(double num1,double num2)//有参数有返回值
    {
        return num1 + num2;
    }
    public string say()//无参数有返回值
    {
        return "欢迎你来到我家";
    }
    public Person(){ }//默认构造方法
    public Person(string name, string sex, int age)//带参数的构造方法
    {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
}

练习:1)编写狗类的代码并创建对象进行测试;2)编写手机类代码并测试;

class Dog
{
    public string name;
  public string sex;
  public int age;
  public string color;
    public Dog() { }
    public Dog(string name,string sex,int age,string color)
    {
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.color = color;
    }
    public void eat(string food)
    {
        Console.WriteLine("狗狗"+name+"在吃"+food);
    }
    public string seeDoor(string who)
    {
        if (who == "生人")
        {
            return "旺旺";
        }
        else
        {
            return "摇尾巴";
        }
    }
}

测试代码:

Dog dog = new Dog("花花","母",2,"白色");
dog.eat("肉骨头");
string res=dog.seeDoor("生人");
Console.WriteLine(res);

电话的类代码:

class Phone
{
  public string brand;
    public double price;
    public string type;
    public Phone() { }
    public Phone(string brand,double price,string type)
    {
        this.brand = brand;
        this.price = price;
        this.type = type;
    }
  public void listenMusic()
    {
        Console.WriteLine(brand+type+"手机在播放音乐");
    }
    public double comp(double num1,double num2,string opt)
    {
        if (opt == "+") return num1 + num2;
        if (opt == "-") return num1 - num2;
        if (opt == "*") return num1 * num2;
        if (opt == "/") return num1 / num2;
        return 0;
    }
    public void call(string phoneCode)
    {
        Console.WriteLine("给"+phoneCode+"号码打电话");
    }
    public string reportTime()
    {
        return DateTime.Now.ToString();
    }
}

手机测试代码:

Phone p = new Phone("华为",4560,"荣耀T-5");
p.listenMusic();
Console.WriteLine(p.reportTime());
p.call("13526985241");
Console.WriteLine(p.comp(6.5,5.9,"*"));

第三节:系统常用类ArrayList (集合)

ArrayList list = new ArrayList();
        list.Add(new Person("任我行", "男", 58));//向集合中添加元素
        list.Add(new Person("任盈盈", "女", 18));
        list.Add(new Person("令狐冲", "男", 18));
        list.Add(new Person("东方不败", "不男不女", 18));
        list.Add(new Person("岳不群", "不男不女", 48));
    Console.writeLine(list.Count);//打印集合中元素的数量
        list.RemoveAt(3);//删除索引位置为3 的元素
        list.Insert(2,new Person("鹿晗","女",23));//在指定索引位置插入元素
        foreach (Person per in list)
        {
            Console.WriteLine(per.name+":"+per.sex+":"+per.age);
        }
        list.Clear();//清空集合中所有的元素

第四节:ListBox和combobox控件的使用

两者都有集合items属性,是用来装内容的,其本质是ArrayList集合,添加ListBox组件将items添加名字等字符串,实现如下效果,点击按钮将ListBox中的所有项添加到comboBox中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eoxh0ier-1672665634021)(assets\1547022928672.png)]

1、单个添加的代码

欢迎按钮代码:

string name = txtName.Text;
MessageBox.Show("欢迎你:"+name,"提示");

将文本框内容单个添加到LIstBox中的按钮的代码:

string name = txtName.Text;
listNames.Items.Add(name);
txtName.Text = "";

将ListBox中内容单个添加到comboBox中的代码:

string name = (string)listNames.SelectedItem;
cobName.Items.Add(name);
cobName.SelectedIndex = 0;
listNames.Items.RemoveAt(listNames.SelectedIndex);
2、将ListBox中选中的所有项一起移动到comboBox中的代码
foreach(string item in list.Items)//将ListBox集合中所有的元素遍历
{
    cob.Items.Add(item);//将遍历的每一个集合元素添加到comboBox集合中
}
cob.SelectedIndex = 0;//让comboBox集合中默认选中第一个元素
list.Items.Clear();//清空ListBox集合中所有元素

改变ListBox中的selectionMode属性为multiSimple让ListBox中的选项可以多选。

foreach(string sel in list.SelectedItems)//遍历ListBox中选中元素的集合
{
    cob.Items.Add(sel);//将选中元素添加到comboBox中
}
cob.SelectedIndex = 0;
while (list.SelectedItems.Count > 0)
{
    list.Items.Remove(list.SelectedItems[0]);//从ListBox大集合Items中删除选中集合中的每一个元素,因为删除后集合会自动前移,所以只需要删除第一个元素即可。
}

第三节:类的静态属性和方法—static

Person per=new Person();

per.intro();

类的属性或方法一旦定义了静态:static,该变量就不能被实例对象访问,只能通过类名直接访问。

示例1:

class Student
    {
        public string name;
        public string sex;
        public int age;
        public static string className;
    public Student(string name,string sex,int age)
    {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
    public void intro()
    {
        Console.WriteLine("我是:"+name+",性别"+sex+",今年"+age+"岁"+"在"+className);
    }
    public static void testc()
    {
        Console.WriteLine("nihao helloworld");
    }
}

调用的时候

Student stu3 = new Student("周钦荣", "男", 20);
        //stu3.className = "java2班";//这样调用是不行的
        Student.className="java3班";
        Student.testc();
类的ToString()方法:
override
public string ToString()
{
     return "我是:"+name + ":性别" + sex + ":年龄" + age;
}

控制台输出:窗体程序需要在项目中右键—【属性】—【输出类型】—【控制台应用程序】

string name = txtName.Text;
int age = int.Parse(txtAge.Text);
string sex = radMan.Checked ? "男" : "女";
Person per = new Person(name, sex, age);
Console.WriteLine(per);


C#WinForm基础编程(三)https://developer.aliyun.com/article/1433703

目录
相关文章
|
22天前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
|
22天前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
|
22天前
|
存储 安全 网络安全
C#编程的安全性与加密技术
【4月更文挑战第21天】C#在.NET框架支持下,以其面向对象和高级特性成为安全软件开发的利器。本文探讨C#在安全加密领域的应用,包括使用System.Security.Cryptography库实现加密算法,利用SSL/TLS保障网络传输安全,进行身份验证,并强调编写安全代码的重要性。实际案例涵盖在线支付、企业应用和文件加密,展示了C#在应对安全挑战的同时,不断拓展其在该领域的潜力和未来前景。
|
22天前
|
人工智能 C# 开发者
C#编程中的图形界面设计
【4月更文挑战第21天】本文探讨了C#在GUI设计中的应用,介绍了Windows Forms、WPF和UWP等常用框架,强调了简洁界面、响应式设计和数据绑定等最佳实践。通过实际案例,展示了C#在企业应用、游戏开发和移动应用中的GUI实现。随着技术发展,C#在GUI设计的未来将趋向于跨平台、更丰富的组件和AI集成,为开发者创造更多可能性。
|
22天前
|
存储 算法 C#
C#编程与数据结构的结合
【4月更文挑战第21天】本文探讨了C#如何结合数据结构以构建高效软件,强调数据结构在C#中的重要性。C#作为面向对象的编程语言,提供内置数据结构如List、Array和Dictionary,同时也支持自定义数据结构。文章列举了C#实现数组、链表、栈、队列等基础数据结构的示例,并讨论了它们在排序、图算法和数据库访问等场景的应用。掌握C#数据结构有助于编写高性能、可维护的代码。
|
22天前
|
开发框架 Linux C#
C#编程的跨平台应用
【4月更文挑战第21天】C#与.NET Core的结合使得跨平台应用开发变得高效便捷,提供统一编程模型和高性能。丰富的类库、活跃的社区支持及Visual Studio Code、Xamarin等工具强化了其优势。广泛应用在企业系统、云服务和游戏开发中,虽面临挑战,但随着技术进步,C#在跨平台开发领域的前景广阔。
|
22天前
|
人工智能 C# 云计算
C#编程的未来发展趋向
【4月更文挑战第21天】C#编程未来将深化跨平台支持,强化云计算与容器技术集成,如.NET Core、Docker。在AI和ML领域,C#将提供更丰富框架,与AI芯片集成。语言和工具将持续创新,优化异步编程,如Task、async和await,提升多核性能。开源生态的壮大将吸引更多开发者,共创更多机遇。
|
22天前
|
程序员 C#
C#编程中的面向对象编程思想
【4月更文挑战第21天】本文探讨了C#中的面向对象编程,包括类、对象、封装、继承和多态。类是对象的抽象,定义属性和行为;对象是类的实例。封装隐藏内部细节,只暴露必要接口。继承允许类复用和扩展属性与行为,而多态使不同类的对象能通过相同接口调用方法。C#通过访问修饰符实现封装,使用虚方法和抽象方法实现多态。理解并应用这些概念,能提升代码的清晰度和可扩展性,助你成为更好的C#程序员。
|
22天前
|
开发框架 安全 .NET
C#编程高手的成长之路
【4月更文挑战第21天】本文揭示了成为C#编程高手的路径:牢固掌握基础知识和面向对象编程,深入了解C#特性如泛型和委托,精通ASP.NET等框架工具,养成良好编程习惯,持续学习实践并参与开源项目,勇于挑战创新。通过这些步骤,不断提升编程技能,迈向C#编程的巅峰。
|
23天前
|
IDE 程序员 C#
C#编程入门:从零开始的旅程
【4月更文挑战第20天】本文引导初学者入门C#编程,从环境搭建开始,推荐使用Visual Studio Community版作为IDE。接着,通过编写&quot;Hello, World!&quot;程序,介绍基本语法,包括数据类型、运算符和表达式。文章还涉及控制结构、函数和方法,以及面向对象编程概念。通过学习,读者将对C#有初步了解,并激发进一步探索编程世界的兴趣。