C#随记

C# 里面的 #region 是什么意思?

#region是c#预处理器指令。

#region是一个分块预处理命令,它主要用于编辑代码的分段,在编译时会被自动删除。

#region使你可以在使用VS代码编辑器的大纲显示功能时指定可展开或折叠的代码块。

例如:

#region  MyClass definition

public class MyClass 
{
    static void Main() 

    {

    }

}

#endregion

 备注:#region块必须以#endregion指令终止。

#region块不能与#if块重叠。但是,可以将#region块嵌套在#if块内,或将#if块嵌套在#region块内。


时间操作

计算2个日期之间的天数差
DateTime dt1 = Convert.ToDateTime("2007-8-1");    
DateTime dt2 = Convert.ToDateTime("2007-8-15");   
TimeSpan span = dt2.Subtract(dt1);              
int dayDiff = span.Days ;                    

计算某年某月的天数
int days = DateTime.DaysInMonth(2009, 8);       
days = 31;                                      

给日期增加一天、减少一天
DateTime dt =DateTime.Now;
dt.AddDays(1); //增加一天 dt本身并不改变
dt.AddDays(-1);//减少一天 dt本身并不改变

c#中 int,string之间相互转换

1. 简单方法:int转String:ToString();int转string:int.Parse()   

复杂方法:int转String:System.Convert.ToString();int转string:System.Convert.ToIntXX()

2. int32.parse(xxxxxx);    xx.toString();

3. string到int: Int.Parse();    Convert.Toint();
int到string:    ToString();

还有一些好像是vc的,如下:

1. 以string转int为例: 使用 Integer.valueOf(string) 方法
其余类型类推.

2. Integer.parseInt(String s)

    Byte.parseByte(String s)

3. int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="女侠程佩君";
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;

动态的控制控件显示的层次

btnSearch.SendToBack();置于低层
btnSearch.BringToFront();   置于顶层


CheckBox 是否被选中:

           if(AutoUpdate.Checked == false){
                MessageBox.Show("CheckBox未被选中", "系统提示");
            }


winform 设置控件坐标位置

label1.Location = new System.Drawing.Point(200, 200);


winform 判断click事件点击的是左键还是右键,click和MouseDown委托

C#代码   
  1. button.Click += new System.EventHandler(btn_Click);  
  2. private void btn_Click(object sender, EventArgs e)  
  3. {  
  4.         //EventArgs继承自MouseEventArgs,所以可以强转  
  5.         MouseEventArgs Mouse_e = (MouseEventArgs)e;  
  6.   
  7.         //点鼠标右键,return  
  8.         if (Mouse_e.Button == MouseButtons.Right)  
  9.         {  
  10.             MessageBox.Show("右键!");  
  11.         }  
  12. }  

只有把EventArgs强制转换成MouseEventArgs就可以有相当于MouseDown事件的功能了 
C#代码   
  1. button2.MouseDown += new MouseEventHandler(btn2_MouseDown);  
  2. private void btn2_MouseDown(object sender, MouseEventArgs e)  
  3. {  
  4.         if (e.Button == MouseButtons.Right)  
  5.         {  
  6.             MessageBox.Show("右键");  
  7.         }  

winform 判断文件夹是否存在,新建文件夹,判断文件夹存不存在

方法1: 
C#代码   
  1. if (Directory.Exists("d:\\pic"))  
  2. {  
  3.     MessageBox.Show("存在");  
  4. }  
  5. else  
  6. {  
  7.     MessageBox.Show("不存在");  
  8. }     

方法2: 
C#代码   
  1. DirectoryInfo TheFolder = new DirectoryInfo("d:\\pic");  
  2. if (TheFolder.Exists)  
  3. {  
  4.     MessageBox.Show("进来了");  
  5. }  
  6. else  
  7. {  
  8.     MessageBox.Show("没进来");  
  9. }  
"d:\\pic"可以这样变成路径 
@"d:\pic" 
也就是说转义符可以用@来代替 
新建文件夹: 
C#代码   
  1. if (!Directory.Exists(@txtFileSaveDir.Text))//若文件夹不存在则新建文件夹  
  2. {  
  3.     Directory.CreateDirectory(@txtFileSaveDir.Text); //新建文件夹  


dagaGridView相关操作

(1)winfrom 把dagaGridView里的数据清空,清除dagaGridView里的值
C#代码 

  1. this.dataGridView1.Rows.Clear(); //清空dataGridView1里的显示

(2) 选中dataGridView一条记录,把值赋给comboBox显示出来

下边这个是comboBox中已存在记录的情况 

C#代码   
  1. //设置  comboBox3  为当前选中的  号牌种类  
  2. for (int i = 0; i < comboBox3.Items.Count; i++)  
  3. {  
  4.     comboBox3.SelectedIndex = i;  
  5.   
  6.     string comboBoxText1 = comboBox3.Text.Substring(comboBox3.Text.LastIndexOf(":") + 1);  
  7.   
  8.     if (hpzlCO3.Equals(comboBoxText1))  
  9.     {  
  10.         return;  
  11.     }  
  12.     else  
  13.     {  
  14.         comboBox3.SelectedIndex = -1;  
  15.     }  
  16. }  

下边这个是comboBox中不存在记录的情况  
C#代码   
  1. #region 第二个dataGridView 鼠标单击 选中  
  2.   
  3. int count = 0;  
  4. //设置comboBox1为当前dataGridView2的选中的hpzl的值  
  5. private void dataGridView2_RowEnter(object sender, DataGridViewCellEventArgs e)  
  6. {  
  7.     int rowIndex = e.RowIndex; //获取当前行  
  8.     //MessageBox.Show(rowIndex.ToString());  
  9.   
  10.     string hphm = dataGridView2.Rows[rowIndex].Cells["hphm"].Value.ToString(); //获取当前行 hphm 字段的值  
  11.     string hpzl = dataGridView2.Rows[rowIndex].Cells["hpzl"].Value.ToString(); //获取当前行 hpzh 字段的值  
  12.     string s = dataGridView2.Rows[rowIndex].Cells["id"].Value.ToString(); //获取当前行 xh 字段的值  
  13.   
  14.     this.textBox2.Text = hphm;  
  15.     this.textBox3.Text = hphm;  
  16.   
  17.     int count = 0;  
  18.   
  19.     if (comboBox1.Items.Count == 0)//第一次进入窗体没值的时候,添加一个值到comboBox1里  
  20.     {  
  21.         this.comboBox1.Items.Add(hpzl);  
  22.     }  
  23.     else  
  24.     {  
  25.         //设置  comboBox1  为当前选中的  hpzl  
  26.         for (int i = 0; i < comboBox1.Items.Count; i++)//设置循环comboBox1中所有数据  
  27.         {  
  28.             comboBox1.SelectedIndex = i;//设置comboBox1的索引  
  29.   
  30.             string comboBoxText1 = comboBox1.Text;//获取comboBox1当前索引值  
  31.   
  32.             if (hpzl.Equals(comboBoxText1))//hpzl为当前选中的dataGridView2的 hpzl的值  
  33.             {  
  34.                 count++;//如果进到这个if体,说明comboBox1中已存在当前选中的hpzl的值  
  35.                 return;//跳出  
  36.             }  
  37.             else  
  38.             {  
  39.                 comboBox1.SelectedIndex = -1;//否则设置为当全索引不变  
  40.             }  
  41.         }  
  42.         if (count == 0)//count为0,说明当前选中的dataGridView2的hpzl中的值在comboBox1不存在  
  43.         {  
  44.             this.comboBox1.Items.Add(hpzl);//添加一个comboBox1中不存在的值  
  45.             comboBox1.SelectedIndex = comboBox1.Items.Count - 1;//设置comboBox1的索引为最后添加的那个  
  46.         }  
  47.     }  
  48.   
  49.     this.textBox4.Text = s;  
  50. }  
  51.  
  52. #endregion 

(3) winform 去掉DataGridView最后一行的空白行,删除空白行
C#代码   
  1. //不显示出dataGridView1的最后一行空白  
  2. dataGridView1.AllowUserToAddRows = false

(4)winform DataGridView双击某一行的事件,双击表头或列头不允许有操作

C#代码  
  1. private void dataGridView1_[color=red]CellDoubleClick[/color](object sender, DataGridViewCellEventArgs e)  
  2. {  
  3.     if ([color=red]e.RowIndex > -1 && e.ColumnIndex > -1[/color])//双击表头或列头时不起作用  
  4.     {  
  5.         MessageBox.Show("ok");  
  6.     }  

(5)winform DataGridView单击选中一整行,只能单选,不能选择多行,只能选择一行

设置DataGridView的属性SelectionMode为FullRowSelect 
这样就使DataGridView不是选择一个字段,而是选择一整行了 
设置DataGridView的属性MultiSelect为false 
这样就使DataGridView不能够选择多行,只能选择一行了
(6)winfrom DataGridView使行高不可改变,使列头高度不可改变

C#代码  

  1. // 禁止用户改变DataGridView1的所有列的列宽  
  2. //DataGridView1.AllowUserToResizeColumns = false;  
  3. //禁止用户改变DataGridView1の所有行的行高  
  4. dataGridView1.AllowUserToResizeRows = false;  
  5.   
  6. // 禁止用户改变列头的高度  
  7. dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; 

(7)修改单元格的值

dataGridView1(列名/列索引,行索引).value(值);


show和showDialog的区别

面对多窗口的调用的时候,我们往往不喜欢窗口之间的随意切换,那样我们还要花费时间寻找我们要用的窗口,而且,一但出现问题,窗口的顺序也有可能被再次打乱,很是不顺手,那么我们怎么办呢?
我们可以将show方法转化为showdialog方法,顾名思义,showdialog是一个进行路经绑定的show方法,他是不可以自由切换的,换言之,就是,当你没有关闭你当前页的前提下,你是无法关闭该页面后面的任一页面的,它是当前唯一(路经打开)为true的。
show方法由于未进行绑定,它所显示的各个窗口、对话框是可以相互切换,而不需要关闭当前窗口、对话框。但是他由于未进行绑定,所以每个由show方法打开的窗口的顺序是非固定的,如果遇到什么问题,由show方法打开的窗口的顺序可能会有很大的改变!


获取按键值,判断按键值

C#代码   
  1. private void pictureBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)  
  2.         {  
  3.             MessageBox.Show("按下了按键,if外");  
  4.             MessageBox.Show(e.KeyValue);  
  5.             if (e.KeyValue == 32)//按下了空格进入  
  6.             {  
  7.                 MessageBox.Show("按下了空格,if内");  
  8.             }  
  9.         } 

使comboBox下拉列表不可编辑

设置comboBox的DropDownStyle属性为DropDownList,即可

C#代码   
  1. comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;  

 

弹出确认后删除

C#代码   
  1. if (MessageBox.Show("确认删除?""此删除不可恢复", MessageBoxButtons.YesNo) == DialogResult.Yes)  
  2. {  
  3.   
  4.  //删除操作  
  5.   


确定指定对象是否是 Array 对象中的元素

            ArrayList al = new ArrayList();
            al.Add("xxx");
            al.Add("yyy");
            if (al.Contains("xxx"))
            {
                MessageBox.Show("!", "弹出来了", MessageBoxButtons.OKCancel);
            }

ComboBox绑定ArrayList数据

 ArrayList list = new ArrayList(); //创建这个List是为了ComboBox绑定数据使用。
            Hashtable hash = new Hashtable();//数据源哈希表
            hash.Add("1", "1");
            hash.Add("2", "2");

            //通过这一步,就可以使用hash表间接的作为数据源使用
            foreach (System.Collections.DictionaryEntry entry in hash)
            {
                list.Add(entry);
            }
            combox.DataSource = list;
            combox.DisplayMember = "Value";
            combox.ValueMember = "Key";

//这样的顺序会被改变,因为foreach循环hashtable的原因,可以通过手动添加

list.add(new System.Collections.DictionaryEntry("key","value"));


暂停控制台应用程序执行

在输出方法后面加上
System.Console.Read();


垃圾回收

垃圾回收可以分为Dispose和Finalize两类,关于这两者的区别已经太多了,一个是正常的垃圾回收GC所调用的方法,另外一个是终结器Finalizer,所调用的方法,在Effective C#一书中,有着明确的建议是说使用IDispose接口来代替Finalize。原因是因为Finalize终结会增加垃圾回收对象的代数,从而影响垃圾回收。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值