WinForm开发之点滴整理

一.添加资源(图片,文字之类)

Winform开发中经常会要用到一些文件,例如给控件加背景图之类的。但是Winform不想Web开发,直接把图片放到项目下,调用的时候直接相对目录就可以了。

WinForm里就相对比较麻烦了,可以通过下面方式实现:
①在工程的根目录下找到文件夹Properties,下的文件Resources.resx,双击打开

②添加资源=>添加现有文件  选择好后保存即可。

③给控件绑定图片时,肯定会打开"选择资源"窗口(这个应该都见过)。选择"项目资源文件",这样之前添加的文件就会自动显示在下面,选中 确定 OK。

 


二.两个combobox共用一个数据源的问题

当在一个页面中多个combobox共用一个数据源时,就会发生一个奇怪的现象:如果一个combobox的选中状况发生变化时,其他的也会发生同样的变化(即选中的项一直是相同的)。

数据源有多种类型,这里给出DataSet和List的解决方法:

①DataSet可以使用Copy方法:

DataSet ds = new DataSet();

comboBox1.DataSource = ds;
comboBox2.DataSource = ds.Copy();

②List可以使用ToArray或ToList方法:

List<int> list = new List<int>();
list.Add(10);
list.Add(20);
list.Add(30);

comboBox1.DataSource = list;
comboBox2.DataSource = list.ToArray();
List<int> list = new List<int>();
list.Add(10);
list.Add(20);
list.Add(30);
comboBox1.DataSource = list;
comboBox2.DataSource = list.ToList();

 


三.当关闭子窗口时,父窗口也随之关闭的问题
原因不详
解决方法:当窗口关闭的时候,在窗口关闭事件对象会有一个存放关闭原因的属性(CloseReason)和是否取消关闭属性(Cancel)
在父窗口的关闭事件中,如果是因为子窗口关闭而引起的关闭,则e.CloseReason是CloseReason.None;
如果是用户点击的关闭按钮或者执行Form.Close()方法的话,则e.CloseReason是CloseReason.UserClosing;
所以只需要判断e.CloseReason的值,然后设定e.Cancel为true(取消关闭)即可。

private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.None)
    {
        e.Cancel = true;
    }
}

 


四.禁止窗口的可调整大小
设置Form的FormBorderStyle为FixedSingle
去掉最大化最小化按钮:将MaximizeBox和MinimumBox设为false;



 

 

posted @ 2013-05-17 08:27  TiestoRay  阅读(469)  评论(0编辑  收藏  举报