zoukankan      html  css  js  c++  java
  • 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;//将当前单元格设为可读

    7.datetimepicker初始为空值的方法

    方法一:

    在窗口初始化函数中添加,并在日期改变事件里定义格式:

    dateTimePickerEnd.Format = DateTimePickerFormat.Custom;
    dateTimePickerEnd.CustomFormat = " ";
    
    private void dateTimePickerEnd_ValueChanged(object sender, EventArgs e)
    {
    dateTimePickerEnd.CustomFormat =  "yyyy-MM-dd HH:mm:ss";
    }
    View Code

    方法二:

    在日期控件上面覆盖一个文本框,然后初始化时候文本框是空值,每次日期选择之后将值赋在文本框里面。

    窗体属性

    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#界面假死问题

  • 相关阅读:
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结v2
    JS设置cookie、读取cookie、删除cookie
    Atitit 图像处理30大经典算法attilax总结
    Atitit数据库层次架构表与知识点 attilax 总结
    Atitit 游戏的通常流程 attilax 总结 基于cocos2d api
    Atitti css transition Animation differ区别
    Atitit 图像清晰度 模糊度 检测 识别 评价算法 源码实现attilax总结
    Atitit 全屏模式的cs桌面客户端软件gui h5解决方案 Kiosk模式
    Atitit 混合叠加俩张图片的处理 图像处理解决方案 javafx blend
    Atitit  rgb yuv  hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别
  • 原文地址:https://www.cnblogs.com/peterYong/p/8603788.html
Copyright © 2011-2022 走看看