一、进程

一个进程就是一个程序,利用进程可以在一个程序中打开另一个程序。

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进程、线程、用户控件的更多相关文章

  1. C# WinFrom 跨线程访问控件

    1.跨线程访问控件委托和类的定义 using System; using System.Windows.Forms; namespace ahwildlife.Utils { /// <summ ...

  2. 在VisualStudio 工具箱中隐藏用户控件

    当我们创建一个用户控件后,VisualStudio会自动将其添加到工具箱中,本来这是一个比较贴心的设计.但是,有的时候,我们并不想将用户控件放到工具箱中. 例如:在WPF中,为了避免一个页面的控件过多 ...

  3. 【2017-05-04】winfrom进程、线程、用户控件

    一.进程 一个进程就是一个程序,利用进程可以在一个程序中打开另一个程序. 1.开启某个进程Process.Start("文件缩写名"); 注意:Process要解析命名空间. 2. ...

  4. winfrom获取用户控件里的控件对象

    如何获取用户控件里的控件对象呢,其实思路也是很简单的, 比如有一个panel 用户控件 里面有许多的其他控件. 那么要找出一个Label控件怎么找呢,好的.现在我们就开始 首先,一个foreach循环 ...

  5. 野比的示波器案例(Winfrom用户控件)

    使用该用户控件做的效果图,如果数据正确,可实现 波形.直线.等等效果图...... 对于本程序的认识还是不够深彻.如果有其他方法或算法,欢迎讨论下.将我所能理解的代码都再次标识了一番. ------- ...

  6. [C#] Control.Invoke方法和跨线程访问控件(转载)

    转载前,在网上找了好多INVOKE方法的文章,就这个看着还可以,明白了大概,以后再深用的时候再研究 ,废话少说上转载(连转载都说的这么有气势,哈哈)   在设计界面时,我们经常需要将一些需要时间才能完 ...

  7. [C#] Control.Invoke方法和跨线程访问控件

    在设计界面时,我们经常需要将一些需要时间才能完成的操作放在另一个线程(不同于UI主线程)中执行.但是这些操作可能需要将其结果或完成情况通知主线程,比如调用窗体的方法,或者触发事件(由界面响应事件),很 ...

  8. 无边框窗体、用户控件、Timer控件

    一.无边框窗体1 最大化.最小化以及关闭按钮制作实际上就是更换点击前.指向时.点击时的图片 (1)将图片放在该文件夹的Debug中,获取图片的路径Application.StartupPath + & ...

  9. WebFormViewEngine及用户控件寻址bug

    在做我的网站的时候遇到了主题切换的问题,特总结与大家共享. 熟悉asp.net mvc的朋友都知道,mvc中,默认情况下视图都在views文件夹下放着.要想改变文件必须重写WebFormViewEng ...

随机推荐

  1. myeclipse中的项目 如何在项目视窗中显示setting,classpath等配置文件

    导入了别人的项目,各种jar包都放好后,path也都build好了,项目也能正常启动,但是就是项目名有红叉,这是为什么呢? 网上有人说Java build path中的jar包missing了,这是一 ...

  2. Java代码实现文件添加数字签名、验证数字签名

    Linux下实现加签.验签 1.使用OpenSSL 生成公钥和密钥: #用 OpenSSL, Linux 上自带,常用命令如下: #生成 RSA 私钥(传统格式的) openssl genrsa -o ...

  3. unity3d IL2CPP for android

    unity3d 使用IL2Cpp导出android工程报以下错误解决方法 重点是这块 “”System.Reflection.TargetInvocationException: ���õ�Ŀ�귢�� ...

  4. 【Excel】输出固定长文本

    '******************************************************************************* ' 固定長形式テキストファイル書き出す ...

  5. iOS开发之--UIImageView的animationImages动画

    图片动画实现,代码如下: -(UIImageView *)animationImageView { if (!_animationImageView) { _animationImageView= [ ...

  6. Golang 笔记 4 defer、error、panic

    一.defer语句 defer语句仅能被放置在函数或方法中.它由关键字defer和一个调用表达式组成.这里的表达式所表示的既不能是对Go语言内建函数的调用也不能是对Go语言标准库代码包unsafe中的 ...

  7. Retrofit2 项目配置

    在项目的 app  build.gradle 文件中加入 dependencies { // Retrofit2implementation 'com.squareup.retrofit2:retro ...

  8. 【C++/实验三】类和对象

    1.定义一个矩形类,有长,宽两个属性,有成员函数计算矩形的面积. 在该矩形类中,我做了5个主要的测试. 构造函数带默认值参数,利用默认值参数计算矩形面积:rectangle(double x=2.0, ...

  9. js设计模式(六)---命令模式

    命令模式算是最简单.优雅的模式之一了,命令模式中的命令指的是一个执行某些特定事情的指令.目的是吧请求发送者和请求接受者解耦, 就像点餐,顾客只需要发送菜单,谁去接收,不用考虑.厨师接收到命令开始做菜, ...

  10. redis数据库通过dump.rdb文件恢复数据库或者数据库迁移

    环境:centos7.2软件:redis-3.2.10(yum安装) 情景一:公司之前的redis没有开启aof模式,一直是rdb模式,但是数据又非常重要,数据一点也不能丢失,所以需要开启aof,但是 ...