zoukankan      html  css  js  c++  java
  • C#一些用法

     C#一些用法

    关于 WPF 在主窗口中用多线程打开的子窗口关闭后进程还存在,这个问的题的解决方法。

     this.Dispatcher.Thread.Abort()

    程序退出的方法:

    • this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;
    • Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;
    • Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;
    • System.Environment.Exit(0);   这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。

    C#的引用

    class RefExample {
        static void Method(ref int i) {
            // Rest the mouse pointer over i to verify that it is an int.
            // The following statement would cause a compiler error if i
            // were boxed as an object.
            i = i + 44;
        }
    
        static void Main() {
            int val = 1;
            Method(ref val);
            Console.WriteLine(val);
    
            // Output: 45
        }
    }

    窗口类:

    关闭窗口:this.Close();
    隐藏窗口:this.Hide();
    弹出新的窗口后,能对原窗口操作:Show();
    弹出新的窗口后,不能对原窗口操作:ShowDialog();
    
    弹出信息的小窗口:
    MessageBox.Show("信息");
    
    c# form点击X退出程序
    属性中,双击FormClosing添加事件,在函数中写:
    Application.Exit();
    textBox的一些用法:
    ' textBox2.Text = "sda"; // 把字符串显示在文本中 在C#中把textBox置为密码框,可以直接在属性的行为的passwordChar置为* String spass = textBox2.Text; // 得到文本中字符串 Application.Exit(); // 关闭所有界面 C# ListView用法详解 http://blog.csdn.net/czw2010/article/details/7910324 以下为简单的应用: ListView_commuData.View = View.Details;//显示表头 ListView.gridlines = true;//显示网格线 listView1.View = View.Details; // 显示表头 listView1.GridLines = true; // 显示网格线 int per = 100; // 列宽 listView1.Columns.Add("课程编号", per, HorizontalAlignment.Center); listView1.Columns.Add("课程名称", per, HorizontalAlignment.Center); listView1.Columns.Add("任课教师", per, HorizontalAlignment.Center); listView1.Columns.Add("学分", per, HorizontalAlignment.Center); SqlConnection con = new SqlConnection("server= (local);uid=sa;pwd=密码;database=数据库名"); con.Open(); SqlCommand cmd = con.CreateCommand(); cmd.CommandText = "SQL语句"; SqlDataReader rs = cmd.ExecuteReader(); // 查询的SQL语句 while (rs.Read()) { String[] s = new String[4]; for(int i=0;i<4;i++) s[i] = String.Format("{0}", rs[i]); // 取出第几列元素 ListViewItem lvi = new ListViewItem(); lvi.Text = s[0]; for(int i=1;i<4;i++) lvi.SubItems.Add(s[1]); listView1.Items.Add(lvi); } con.Close(); cmd.ExecuteNonQuery(); // 插入,更新,删除操作,返回的是影响的行数 数据库进行连接: 命名空间: using System.Data.SqlClient; // 等待数据库连接 SqlConnection con = new SqlConnection("server= (local);uid=sa;pwd=密码;database=数据库"); con.Open(); SqlCommand cmd = con.CreateCommand(); cmd.CommandText = "select * from teacher "; SqlDataReader rs = cmd.ExecuteReader(); while(rs.Read()){ String x = String.Format("{0}", rs[0]); // 取出数据库中的第几个下标的信息 String y = String.Format("{0}",rs[2]); } con.Close(); rs.Close(); cmd.ExecuteNonQuery(); // 插入,更新,删除操作,返回的是影响的行数

    单选框 radioButton.Checked表示是否被选中

    复选框  checkbox1.Checked 表示是否选中

    下拉框:

    comboBox1.Items.Clear();
    comboBox1.Items.Add("生活杂记");
    comboBox1.Items.Add("心情随笔");
    comboBox1.Items.Add("工作笔记");
    comboBox1.SelectedIndex = 0; // 选择第几个
    DropDownStyle 属性设置为 DropDownList.
    Simple 简单的下拉列表框(始终显示列表)、
    DropDown 可以编辑,与有下拉列表。默认.
    DropDownList 只有下拉列表,不能编辑。

    把textBox之类的空间设置为只读,不可以修改删除的操作:把readonly属性设为true,并且把BackColor这是为White

    文件浏览对话框
    if (this.openFileDialog2.ShowDialog() == DialogResult.OK) {
      string FileName = this.openFileDialog2.FileName; // 你的 处理文件路径代码
     }
    文件夹浏览对话框
    FolderBrowserDialog 
    FolderBrowserDialog dilog = new FolderBrowserDialog();
    dilog.Description = "请选择文件夹";
    if(dilog.ShowDialog() == DialogResult.OK || dilog.ShowDialog() == DialogResult.Yes){
        path=dilog.SelectedPath;
    }

    c# webBrowser

    window.external 不支持该对象:

    查看C# form函数是否为public 

    axWindowsMediaPlayer控件:
    
    axWindowsMediaPlayer1.close(); // 启动时不直接运行该控件
    
    axWindowsMediaPlayer2.Ctlcontrols.play();  // 开始播放
    
    取消上一首歌,播放下一首歌
    axWindowsMediaPlayer1.close();
    axWindowsMediaPlayer1.currentPlaylist.clear();
    axWindowsMediaPlayer1.currentPlaylist.appendItem(axWindowsMediaPlayer1.newMedia(FileName));
    将背景设置为透明:
    this.BackgroundImage = null;
    this.BackColor = System.Drawing.Color.Red;//将窗体背景设置成红色
    this.TransparencyKey = System.Drawing.Color.Red; //将红色设置成透明色
    
    换背景图:
    this.BackgroundImage = Image.FromFile(System.IO.Path.GetFullPath("bg1.jpg"));

    进度条:

    你在窗体上拉个进度条进来,然后在窗体上放个按钮,在按钮点击事件里写如下 :

    progressBar1.Maximum = 100;//设置最大长度值
    progressBar1.Value = 0;//设置当前值
    progressBar1.Step = 5;//设置没次增长多少
    for (int i = 0; i < 10; i++){//循环
        System.Threading.Thread.Sleep(1000);//暂停1秒
        progressBar1.Value += progressBar1.Step;让进度条增加一次
    }

    如何固定的设置窗体大小

      有一个关于窗体边界的属性(FromBorderStyle)。这个属性的默认值是Sizable。还有另外六个值,分别为None、FixedSingle、Fixed3D、FixedDialog、FixedToolWindow、SizableToolWindow。None就是无边界,然后窗体右上角也没有最小化、最大化、关闭的按键,一般用于显示ICON或者一般的联系方式。Fixed的意识差不多就是固定的意思。然后Single就是窗体框架只是一条线

    C# KeyValuePair<TKey,TValue>的用法。结构体,定义可设置或检索的键/值对。也就是说我们可以通过 它记录一个键/值对这样的值。比如我们想定义一个ID(int类型)和Name(string类型)这样的键/值对,那么可以这 样使用。

    /// <summary>
    /// 设置键/值对
    /// </summary>
    /// <returns></returns>
    private KeyValuePair<int, string> SetKeyValuePair()
    {
        int intKey = 1;
        string strValue = "My value";
        KeyValuePair<int, string> kvp = new KeyValuePair<int, string>(intKey, strValue);
        return kvp;
    }
     
    
    /// <summary>
    /// 获得键/值对
    /// </summary>
    private void GetKeyValuePairDemo()
    {
        KeyValuePair<int, string> kvp = SetKeyValuePair();
        int intKey = kvp.Key;
        string strValue = kvp.Value;
    }

     KeyValuePair<int, int> now = new KeyValuePair<int, int>(a,b);

     

     类似于C++ STL

    操作
    C++(STL)
    C#(.net)
    说明
    包含
    #include <vector>
    using System.Collections.Generic;
    C++中也可以using namespace std;
    
    声明
    std::vector<int> array;
    List<int> array = new List<int>();
    
    
    迭代器声明
    std::vector<int>::iterator iter=array.begin();
    List<int>.Enumerator iter = array.GetEnumerator();
    
    
    C++
    array.push_back(4); 
    array.insert(iter,51);
    C#
    array.Add(4); 
    array.Insert(2, 51);
    
    
    
    C++
    int val=array[0]; 
    val=array.at(1);  //进行下标检测
    
    C#
    int val = array[0];
    array.Contains(5); //是否包含5 
    array.IndexOf(1);  //元素1的下标
     
    C++
    array.pop_back();  //删除最后的元素 
    array.erase(iter);  //删除iter位置的元素 
    array.clear();
    C#
    array.Remove(1);  //删除"1”这个元素 
    array.RemoveAt(0);  //删除0号元素 
    array.Clear();
    
    C++
    array.empty(); 
    array.capacity();  //容量(根据当前非配的内存) 
    array.size();  //元素数
    C#
    array.Count;  //元素数 
    array.Capacity;  //容量
     
    遍历
    C++
    for (std::vector<int>::size_type i=0;i<array.size();++i){} 
    for (iter=array.begin();iter!=array.end();iter++){} 
    for_each(array.begin(),array.end(),func); //func()是函数
    C#
    for (int i = 0; i < array.Count; i++){} 
    while (iter.MoveNext()){} 
    foreach (int d in array){}
    排序
    std::sort(array.begin(),array.end());
    array.Sort();
    C++中要#include <algorithm>,上面的for_each也是
    
    
    
    
    如果是自定义的Key类型,C++中需要重载比较运算符;C#中可自定义相等比较器
    C++:    map
    #include <map>
    map<string,int> map; // 当然不能够用map,这里只是说明方便而用的
    map_type::iterator iter = ma.begin();
    map[_T("first")]=5; 
    map.insert(map_type::value_type(_T("second"),2)); 
    map.insert(map_type::value_type(_T("second"),3));    //不覆盖,不异常
    map.erase(iter);  //iter有效且不等于map.end() 
    map.erase(_T("first")); 
    map.clear();
    int val=map[_T("second")];  //没有则构造新的 
    iter=map.find(_T("first")); 
    if (iter!=map.end()) 
        val=iter->second;
    for (iter=map.begin();iter!=map.end();++iter) //遍历时删除 
        map.erase(iter++);
    map.size(); 
    map.empty();  //是否为空
    
    
    
    C#:        Dictionary
    命名空间:using System.Collections.Generic;
    定义:Dictionary<string, int> map = new Dictionary<string, int>();
    插入:map.Add("first", 5); 
          map["second"] = 2;  //这种操作已经进行了插入 
          //map.Add("second", 3);    //重复异常
    删除:map.Remove("first"); 
    清空:map.Clear();
    调用:int data = map["second"];    //不存在则异常 
    map.ContainsKey("third"); 
    map.ContainsValue(5); 
    map.TryGetValue("hello", out data);
    注意C++中下标检索时如果不存在这个元素也不产生错误
    foreach (KeyValuePair<string, int> pair in map)
        //不能进行删除操作
    
    
    
    C#:        Hashtable
    命名空间:using System.Collections;
    定义:Hashtable ma = new Hashtable();
    插入:ma["dsa"] = 12; // 可以覆盖之前的
          ma.Add("dsadsa",123);
    删除:ma["dsa"] = null;
    清空:ma.Clear();
    遍历:foreach (DictionaryEntry i in ma)
    大小:ma.count
    不存在则为null

     

    转自:c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件

    c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件,在IO处理上遇到了无法操作的问题。

    文件“D:\log.txt”正由另一进程使用,因此该进程无法访问该文件。

    log.txt是一个日志文件,不定时都可能由另外的程序对它进行日志记录写入操作。

    今需要对日志文件读取出来,显示在日志查询里,需要用到了IO流。

    1、 FileStream fs = File.OpenRead(url);
    StreamReader sr = new StreamReader((System.IO.Stream)fs, System.Text.Encoding.Default);

    错误提示:文件“D:\Log\Cargoabc\logfilecargoabc.txt”正由另一进程使用,因此该进程无法访问该文件。

    2、StreamReader sr = File.OpenText(url);

    错误提示:错误提示:文件“D:\Log\Cargoabc\logfilecargoabc.txt”正由另一进程使用,因此该进程无法访问该文件。

    3、 FileStream fs = new FileStream(url, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
    StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);

    正确读取。

    总结:

    这样的情况,不单要与只读方式打开txt文件,而且,需要共享锁。还必须要选择flieShare方式为ReadWrite。因为随时有其他程序对其进行写操作。

     1 遍历文件夹folderName
     2 DirectoryInfo dir = new DirectoryInfo(folderName);
     3 FileInfo[] files = dir.GetFiles("*.txt");
     4 foreach (FileInfo f in files){
     5     string fileName = f.Name.ToString();
     6 }
     7 
     8 文件读取
     9 FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
    10 StreamReader fin = new StreamReader(fs);
    11 string re = fin.ReadToEnd();
    12 fin.Close();
    13 
    14 文件写入
    15 StreamWriter fout = new StreamWriter(fileName);
    16 fout.Write(data);
    17 fout.Close();
  • 相关阅读:
    ubuntu12.04 死机 卡屏 画面冻结解决方案
    Install Firefox 20 in Ubuntu 13.04, Ubuntu 12.10, Ubuntu 12.04, Linux Mint 14 and Linux Mint 13 by PPA
    ListView1.SelectedItems.Clear()
    android studio 下载地址
    jquery.slider.js jquery幻灯片测试
    jquery.hovermenu.js
    jquery.tab.js选项卡效果
    适配 placeholder,jquery版
    jquery.autoscroll.js jquery自动滚动效果
    将 Google Earth 地图集成到自己的窗体上的 简单控件
  • 原文地址:https://www.cnblogs.com/yejinru/p/3081299.html
Copyright © 2011-2022 走看看