winfrom进程、线程、用户控件
一、进程
一个进程就是一个程序,利用进程可以在一个程序中打开另一个程序。
1、开启某个进程
Process.Start("文件缩写名");
注意:Process要解析命名空间。
2、通过绝对路径开启某个进程
Process p = new Process();
p.StartInfo = new ProcessStartInfo("要打开的程序绝对路径");
p.Start();
3、获取全部开启的进程:返回的是一个Process类的数组
Process[] pro = Process.GetProcesses();
4、杀死进程
对象.Kill();
5、常用的开启网页注册账号:
Process.Start("http://.....");
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
//限制可以选择的文件类型
openFileDialog1.Filter = "应用程序|*.exe"; DialogResult dr = openFileDialog1.ShowDialog();
if (dr == DialogResult.OK)
{
//将选中文件的路径放到textBox1里
textBox1.Text = openFileDialog1.FileName;
}
} private void button2_Click(object sender, EventArgs e)
{
//先解析Process,实例化。
Process pro = new Process(); //将路径参数实例化出来。
ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text); //设置打开路径需要一个ProcessStartInfo类型参数。
pro.StartInfo = psi; //调用他的打开方法
pro.Start();
} private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//打开默认浏览器,网址是qq。
Process.Start("http://www.qq.com");
} private void button3_Click(object sender, EventArgs e)
{
//获取电脑上开着的所有进程,返还一个Process数组
Process[] pro= Process.GetProcesses(); //遍历数组中每一个进程
foreach (Process p in pro)
{
//把进程打印在richTextBox1中
richTextBox1.Text += p.ToString() + "\r"; //关闭进程,遍历一个关一个,慎用!
//p.Kill(); }
}
}
}
二、线程
每个程序都有一个主线程,控制窗体。
如果主线程要执行的代码需要占用很多时间,就需要将这些要执行的代码另开一个线程来执行。
Thread要解析命名空间。
//使后台线程可以跨线程访问相应的对象。写在构造函数中。
Control.CheckForIllegalCrossThreadCalls = false;
//开一个新线程参数放方法的委托。 
Thread th1 = new Thread(test1);
//让这个线程变成后台线程,主线程关闭的时候后台线程也关闭。
th1.IsBackground = true;
//开始执行线程
th1.Start();
//线程关闭
th1.Abort();
将该线程要做的事写成一个没有返回值的方法test1。
这个方法可以没有参数,也可以有一个参数但这个参数必须是object类型
如果方法需要一个参数,在线程开始里边把这个参数传过去。
将这个方法委托到该线程上去。
为了防止线程在关闭主窗口时的延迟关闭导致的程序报错,
在窗口的FormClosing事件中判断线程是否关闭了,如果还未关闭关闭线程。

三、用户控件
用户控件,顾名思义就是用户自己组成的控件。
1、制作用户控件:
在项目中添加新建项选用户控件,改个名字,添加。
注意:在用户控件的生成代码中把里面空间的访问修饰符都改为public。
制作完以后,生成一下,然后在工具箱中就会有这个用控件。
要想给用户控件中的控件设置属性内容,只能用代码设置。
winfrom进程、线程、用户控件的更多相关文章
- C# WinFrom 跨线程访问控件
		1.跨线程访问控件委托和类的定义 using System; using System.Windows.Forms; namespace ahwildlife.Utils { /// <summ ... 
- 在VisualStudio 工具箱中隐藏用户控件
		当我们创建一个用户控件后,VisualStudio会自动将其添加到工具箱中,本来这是一个比较贴心的设计.但是,有的时候,我们并不想将用户控件放到工具箱中. 例如:在WPF中,为了避免一个页面的控件过多 ... 
- 【2017-05-04】winfrom进程、线程、用户控件
		一.进程 一个进程就是一个程序,利用进程可以在一个程序中打开另一个程序. 1.开启某个进程Process.Start("文件缩写名"); 注意:Process要解析命名空间. 2. ... 
- winfrom获取用户控件里的控件对象
		如何获取用户控件里的控件对象呢,其实思路也是很简单的, 比如有一个panel 用户控件 里面有许多的其他控件. 那么要找出一个Label控件怎么找呢,好的.现在我们就开始 首先,一个foreach循环 ... 
- 野比的示波器案例(Winfrom用户控件)
		使用该用户控件做的效果图,如果数据正确,可实现 波形.直线.等等效果图...... 对于本程序的认识还是不够深彻.如果有其他方法或算法,欢迎讨论下.将我所能理解的代码都再次标识了一番. ------- ... 
- [C#] Control.Invoke方法和跨线程访问控件(转载)
		转载前,在网上找了好多INVOKE方法的文章,就这个看着还可以,明白了大概,以后再深用的时候再研究 ,废话少说上转载(连转载都说的这么有气势,哈哈) 在设计界面时,我们经常需要将一些需要时间才能完 ... 
- [C#] Control.Invoke方法和跨线程访问控件
		在设计界面时,我们经常需要将一些需要时间才能完成的操作放在另一个线程(不同于UI主线程)中执行.但是这些操作可能需要将其结果或完成情况通知主线程,比如调用窗体的方法,或者触发事件(由界面响应事件),很 ... 
- 无边框窗体、用户控件、Timer控件
		一.无边框窗体1 最大化.最小化以及关闭按钮制作实际上就是更换点击前.指向时.点击时的图片 (1)将图片放在该文件夹的Debug中,获取图片的路径Application.StartupPath + & ... 
- WebFormViewEngine及用户控件寻址bug
		在做我的网站的时候遇到了主题切换的问题,特总结与大家共享. 熟悉asp.net mvc的朋友都知道,mvc中,默认情况下视图都在views文件夹下放着.要想改变文件必须重写WebFormViewEng ... 
随机推荐
- [原创]Modbus协议学习笔记
			一.参考资料 1.老罗传奇的2篇博文,写的不错,通俗易懂.链接地址为:http://www.cnblogs.com/luomingui/tag/Modbus/ 2.阿莫论坛精华资料:http://ww ... 
- HAWQ配置之客户端访问
			一.配置简单的口令访问 1,建立数据库和用户 postgres=# create database epbd; CREATE DATABASE postgres=# create role user1 ... 
- Kafka 2.1.0压缩算法性能测试
			Apache Kafka 2.1.0正式支持ZStandard —— ZStandard是Facebook开源的压缩算法,旨在提供超高的压缩比(compression ratio),具体细节参见htt ... 
- numpy和tensorflow中的广播机制
			广播的引出 numpy两个数组的相加.相减以及相乘都是对应元素之间的操作. import numpy as np x = np.array([[2,2,3],[1,2,3]]) y = np.arra ... 
- 【Python】安装error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"
			pip install Scrapy --> error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft ... 
- 【CF961G】Partitions 第二类斯特林数
			[CF961G]Partitions 题意:给出n个物品,每个物品有一个权值$w_i$,定义一个集合$S$的权值为$W(S)=|S|\sum\limits_{x\in S} w_x$,定义一个划分的权 ... 
- java的方法重载
			1丶java的方法重载特性 满足以下条件的两个或多个方法构成“重载”关系:(1)方法名相同 (2)参数类型不同,参数个数不同或者参数类型的顺序不同 像System.out.println一样,就是重载 ... 
- 方程式ETERNALBLUE 之fb.py的复现
			原文链接:https://www.t00ls.net/viewthread.php?tid=39343 
- ApplicaitionContext妙用request解耦合
			本文记录一个web应用中,如果要获取request对象怎么获取,本次主要思考来自看到上次文件必须把request对象放进service层导致的疑问,然后学习总结之. 第一,也是我们最常用的,在cont ... 
- vue的单向数据流
			父级向子组件传递的值, 子组件不能直接修改这个穿过来的值,否则会曝出警告,这就是单项数据流. 如果是引用值,传递的是引用值得地址,而不是值本身,也就是说,子组件里修改这个传过来的值,通常的做法是放到它 ... 
