winform知识

控件属性

1.文本框/label高度

  文本框Multiline属性,设为true就可以了。改完高度后再将此属性改回来,要不然多行文本框,按回去就去下一行了。

  label的改autoSize属性,设为false就可以了。

2.控件中文字居中

  TextAlign属性:MiddleCenter

 3.颜色属性

  直接输入 #xxxx

 

4.如何去掉button按钮的边框线

  设置FlatStyle为Flat,并且设置FlatAppearance下的BorderSize为0。将按钮所在的容器的底色和按钮颜色设置为不同的。

5.ComboBox

  下拉列表的高度通过字体大小来改变,微软雅黑,12pt(小四)

  DrawMode 默认设置为normal就好,设置为 OwnerDrawVariable,高度可变,但是此时下拉列表的值为不可见的(尽管存在)。

6.DataGridView 

  • 宽度和字体

  显示宽度属性:AutoSizeColumnsMode:AllCells

或者设置高度小一点:

字体:columnHeadersDefaultCellStyle、DefaultCellStyle

  • 类型checkboxColumn的选中

  首先DataGridView必须设置可编辑。

1、用DataGridViewRow.Cells[0].EditedFormattedValue.ToString()=="True"

不用FormattedValue,它是操作提交后的结果,而EditedFormattedValue是当前的结果,不管结果是否已经提交。
2、DataGridViewCheckBoxColumn设置CheckBox默认选中

((DataGridViewCheckBoxCell)dgvDownloadList.Rows[i].Cells["Column1"]).Value = true;

3、设置是否选中

dataGridViewSiteInfo.Rows[i].Cells[0].Value  = "True";

http://blog.csdn.net/wzy0754/article/details/52368377

  •  单击DataGridView中一单元格后立即进入编辑状态

将datagridview1的SelectionMode设置为FullRowSelect(某一行全选中),

在双击事件中代码如下

private void datagridview1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{ this.datagridview1.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly = false;//将当前单元格设为可读

窗体属性

1. 窗体不加边框

this.FormBorderStyle = FormBorderStyle.FixedToolWindow;
this.StartPosition = FormStartPosition.CenterScreen;

2. 窗体只显示一个

static formDevice _formDevice;
 if(_formDevice==null||_formDevice.IsDisposed )
            {
                _formDevice = new formDevice();
                _formDevice.Show();
            }
            else
            {
                _formDevice.WindowState = FormWindowState.Normal;
                _formDevice.Activate();
            }

程序启动【单例】

//获取欲启动进程名
string strProcessName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
            ////获取版本号
            //CommonData.VersionNumber = Application.ProductVersion;
            //检查进程是否已经启动,已经启动则显示报错信息退出程序。
            if (System.Diagnostics.Process.GetProcessesByName(strProcessName).Length > 1)
            {
                MessageBox.Show("程序已经运行!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Application.Exit();
                return;
            }

EXE 图标修改问题

1、窗体属性中找到Icon,单击最右侧的“…”按钮,选择备好的ico图标。【这时窗体图标已经变化了,这是程序内部显示图标的修改方法】

2、程序外部图标的修改方法

右击项目名称,在下拉列表中选择“属性”,

会发现生成的bin目录下的exe图标已经发生变化了。

3、修改ico文件,却发现生成的exe图标未发生变化。重新生成项目也一样,清理后再生成也一样

网上看到的解决方案是:

可能是资源管理器的问题,估计它是有一个缓存,所以在资源管理器中总是显示原来那个图标, 我把这个EXE文件拷到其他文件夹下,图标就正确显示了。 

还有,你也可以按住CTRL+滚动鼠标  改变图标的大小(文件的大图标显示和小图标显示),这时你也可以观察到已经改变的图标

 

C#界面假死问题

  当一个WinForm程序在事件函数中进行IO操作、网络操作或耗CPU大的操作时,窗体会出现明显的卡顿现象。原因在于窗体的消息循环被耗时的操作停住了,UI线程被阻塞。在相关操作没有完成之前,用户不能对窗体进行任何的操作,包括关闭应用程序。

  解决思路是——能不能将阻塞线程的操作在另外一个线程中执行,这样就不会堵塞UI线程

       然而从另外一个线程操作windows窗体上的控件,就会和主线程产生竞争,造成不可预料的结果。因为windowsGUI编程有一个规则,就是只能通过创建控件的线程来操作控件的数据。

       好在因此Control类实现了ISynchronizeInvoke接口,提供了Invoke和BeginInvoke方法来提供让其它线程更新GUI界面控件的机制

       两者区别是:Invoke,需要等待委托的方法执行返回后才执行下面的代码;begininvoke则不需要。

        private void buttonX1_Click(object sender, EventArgs e)  
        {
            Waitting waitting = new Waitting();  
            waitting.Show();  
            Task.Factory.StartNew(() => // 将阻塞线程的操作在另外一个线程中执行,这样就不会堵塞UI线程。   
            {   
                ConnectSDE(); //运行时间5s左右
                MessageBox.Show("连接SDE数据库成功", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);  
                waitting.BeginInvoke((Action)waitting.Close);//BeginInvoke方法返回UI线程更新UI界面控件的机制。   
            });  
        }
View Code

参考:解决C#界面假死问题

 

转载于:https://www.cnblogs.com/peterYong/p/8603788.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值