winForm窗体中实例化一个普通的类A,那我怎么在类A中写代码控制winForm里的例如TextBox控件呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winForm窗体中实例化一个普通的类A,那我怎么在类A中写代码控制winForm里的例如TextBox控件呢?相关的知识,希望对你有一定的参考价值。
winForm窗体中实例化一个普通的类A,那我怎么在类A中写代码控制winForm里的例如TextBox控件呢? 比如改TextBox1.Text属性/....在线等 急
参考技术A C#是面向对象的 那当然TextBox1.Text是与数据库进行操作的咯。。 实例化类A??? A中的方法应该是与数据库进行交互操作的 调用的时候先实例化A a = new A A为类名 然后用类名.方法名(TextBox1.Text) 这样调用 参考技术B 类A里面定义一个方法,例如方法FunctionA(TextBox t,string value)实例化A之后,使用A的FunctionA方法就可以了例如:
public Class A
public void FunctionA(TextBox t,string value)
t.Text =value;
Winform进程线程
进程:
一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况。
进程要使用的类是:Process
它在命名空间:System.Diagnostics;
1、静态方法Start();
2、也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给
StartInfo属性设置一个对象,来通知它要打开的是哪个进程(绝对路径)
private void button1_Click(object sender, EventArgs e) { Process.Start("chrome"); }
也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给
StartInfo属性设置一个对象,来通知它要打开的是哪个进程
//获取路径 private void button2_Click(object sender, EventArgs e) { openFileDialog1.Filter = "应用程序|*.exe"; DialogResult dr = openFileDialog1.ShowDialog(); if(dr==DialogResult.OK) { textBox1.Text = openFileDialog1.FileName; } } //打开文件 private void button3_Click(object sender, EventArgs e) { Process p = new Process(); ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text); p.StartInfo = psi; p.Start(); } 复制代码
线程:
一个进程就像是一个公司,默认只有一个老板
老板叫做 主线程
主线程一旦让它去执行一段需要时间的代码,那么就会出现
程序假死,失去控制
原因是:线程同一时间只能做一件事,而主线程是操作窗体控制的,一旦被占用,那么窗体就没人控制了。
解决办法:
招一个员工帮老板干这个活
开启线程: 使用Thread类
线程基本使用:
//创建一个线程对象,告诉它要执行的是哪一个方法
Thread th = new Thread(aaa);
//准备好了,开始执行,不是立即开始,CPU决定什么时候开始
th.Start();
---------------------------------------------------------------
需要跨线程访问对象:
线程需要执行一个方法,而这个方法允许有一个参数,并且这个参数必须是object类型的
程序默认不允许跨线程访问对象,因为监控开着
需要关闭监控
在构造函数的构造方法下面写上:
Control.CheckForIllegalCrossThreadCalls = false;
---------------------------------------------------------------
程序退出立刻关闭所有线程:
线程默认开启为前台线程,程序必须将所有的前台线程执行完毕后才会真正退出程序
解决办法:将线程变为后台线程
//设置后台线程
th.IsBackground = true;
public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 //程序默认不允许跨线程访问对象,因为监控开着,需要关闭监控,在构造函数的构造方法下面写上: 7 Control.CheckForIllegalCrossThreadCalls = false; 8 } 9 10 private void button1_Click(object sender, EventArgs e) 11 { 12 //创建一个线程对象,告诉它要执行的是哪一个方法 13 Thread th = new Thread(NewMethod); 14 //设置后台线程 15 th.IsBackground =true; 16 // 17 th.Start(sender); 18 (sender as Button).Enabled = false;//开始后按钮不可用 19 } 20 21 private static void NewMethod(object obj)//提取的方法 22 { 23 for (int i = 0; i < 5; i++) 24 { 25 Console.WriteLine(i); 26 Thread.Sleep(1000);//1秒循环一次 27 } 28 (obj as Button).Enabled = true; 29 } }
以上是关于winForm窗体中实例化一个普通的类A,那我怎么在类A中写代码控制winForm里的例如TextBox控件呢?的主要内容,如果未能解决你的问题,请参考以下文章
C#winform中为啥一个窗体的对象可以调用在另一个窗体中创建的一个类未实例化下
在启动一个winform窗体的时候,实例化多个窗体对象用于跳转页面或其他功能,这样损耗大吗?