• Winform 基础


    1:winform应用程序是一种智能客户端技术,我们可以使用winform应用程序,帮助我们获得信息或者传输信息等。

    2:属性

    Name:在后台要获得前台的控件对象,需要使用Name属性。

    Visible:指示一个控件是否可见。

    Enabled:指示一个控件是否可用。

    3:事件:发生一件事情

    注册事件:双击控件注册的都是控件默认被选中的那个事件。

    4:主窗体

    在Main函数当中创建的窗体对象,我们称之为这个窗体应用程序的主窗体,也就意味着,当你将主窗体关闭后,整个应用程序都关闭了。

    5:TextBox控件

    WordWrap: 指示文本框是否换行。

    PaswordChar: 让文本框显示一个单一的字符

    ScollBars: 是否显示滚动条

    事件:TextChanged 当文本框中的内容发生改变的时候出发这个事件。

    6:跑马灯练习

    string str="abcde";

    str=str.Substring(1)+str.Substring(0,1)

    7:Timer

    在指定的时间间隔内做一件指定的事情。

    8:单选和多选

    checked: 指示这个控件是否处于选中状态。

    默认情况下,在一个窗体中,所有的单选按钮只允许选中一个,可以使用groupbox进行分组。

    9:MDI窗体的设计

    1:首先确定一个父窗体。将IsMdiContainer设置为true

    2:创建子窗体,并且设置他们的父窗体

    ------------------------------------------------------
    1:Directory操作文件夹

    CreateDirectory 创建文件夹

    Delete 删除文件夹

    Move 剪切文件夹

    Exist 判断是否存在

    GetFiles 获得指定的目录下所有文件的全路径

    Directory.GetFiles(string path,string searchPattern); //searchPattern:要与path中的文件名匹配的搜索字符串

    GetDirectory 获得指定目录下所有文件夹的全路径

    2:WebBrowser浏览器控件
    url

    3:ComboBox下拉框控件

    DropDownStyle:控制下拉框的外观样式
    命名规则:cbl+...

    4:点击更换图片

    1):在程序加载的时候,将指定图片文件夹中所有的图片文件名读取到ListBox中

    OpenFileDialog:打开对话框

    SaveFileDialog:保存对话框

    FontDialog:字体对话框

    ColorDialog:颜色对话框

    5:进程类

    //using System.Threading.Tasks;

    Process 

    item.Kill(); //杀掉进程

    Process.Start("calc"); //通过进程打开一些应用程序

    6:线程类

    //跨线程操作:

    Control.CheckForIllegalCrossThreadCalls //是否捕获对错误线程的调用

    //Form_FormClosing //点击关闭窗体的时候,判断新线程是否为null

    thread th=new thread();

    th.Abort();

    注意“方法重入”的问题:所谓的方法重入,是一个有关多线程编程的概念。程序中多个线程同时运行时,就可能发生同一个方法被多个线程同时调用的情况。

    当这个方法中存在一些非线程安全的代码时,方法重入就会导致数据不一致的情况,这是非常严重的bug。


    Object obj = new Object();
    //开辟内存
    //调用构造函数
    //同步块索引(负数)

    System.Threading.Monitor.Enter(obj);
    try
    {
      DoSomething();
    }
    finally
    {
      System.Threading.Monitor.Exit(obj);
    }

    lock这段代码是怎么运行的.lock语句根本使用的就是Monitor.Enter和Monitor.Exit,也就是说lock(o)时执行Monitor.Enter(this),大括号结束时执行Monitor.Exit(this).

    它的意义在于什么呢,对于任何一个对象来说,他在内存中的第一部分放置的是所有方法的地址,第二部分放着一个索引,他指向CLR中的SyncBlock Cache区域中的一个SyncBlock.什么意思呢?

    就是说,当你执行Monitor.Enter(Object)时,如果object的索引值为负数,就从SyncBlock Cache中选区一个SyncBlock,将其地址放在object的索引中。

    这样就完成了以object为标志的锁定,其他的线程想再次进行Monitor.Enter(object)操作,将获得object为正数的索引,然后就等待。

    直到索引变为负数,即线程使用Monitor.Exit(object)将索引变为负数。

    7:前台线程和后台线程

    前台线程:只有所有的前台线程都关闭才能完成程序关闭。

    后台线程:只要所有的前台线程结束,后台线程自动结束。

    8:SoundPlayer //播放音乐类

    //通过进行曲打开制定的文件

    ProcessStartInfo psi=new ProcessStartInfo(@"path");

    Process p=new Process();

    p.StartInfo=psi;

    p.Start();

  • 相关阅读:
    数据结构学习笔记——串
    XHTML学习笔记
    Java之父James Gosling
    MultiVersion Concurrency Control 多版本并发控制
    给Parser设置代理
    Doug Lea : 世界上对Java影响力最大的个人
    nginx rewrite
    互联网公司客户支持
    Java客户端HttpClient和HttpURLConnection修改请求头Host问题
    python urllib2 设置代理 自定义header
  • 原文地址:https://www.cnblogs.com/DrHao/p/5130061.html
Copyright © 2020-2023  润新知