2010-07-26 18:06:00 fujie724 阅读数 9349
  • winform常用控件

    主要包含内容: 第一讲 课程简介 第二讲 Windows窗体-创建和介绍 第三讲 Windows窗体-属性 第四讲 Windows窗体-方法和事件 第五讲 Windows窗体-MDI窗体和子窗体 第六讲 控件的相关操作 第七讲 Label控件显示世界你好 第八讲Button控件 第九讲TextBox控件 第十讲RichTextBox控件 第十一讲ComboBox控件 等

    3905 人正在学习 去看看 胡延亮

以前做用户控件的时候喜欢拿已有的基础控件来拼。

发现这样做用户控件比较方便。

但是在控件投入大量使用之后,发现这种做法对控件的速度影响非常大。

如果一个控件是由1个Label,一个TextBox复合而成的。

那么创建一个这样的控件就相当于要生成2个控件。在设计界面和程序启动的时候速度明显感觉到变慢了。

 

于是全部重新修改,尽量把能不用控件的地方全部改成绘制。

比如Label用画出来的文字去替代。

 

比如一个日历控件上的31天的日期,以前用的Label,或者Button。

现在全部换成画出来的。创建速度从20毫秒加快到了0毫秒。

 

随之而来带来的一个问题就是。绘画的操作太多。导致界面闪烁比较严重。

问了一下公司的前辈,得到了下面的一个方法。使用之后确实完全没有闪烁了。。十分吃惊。赶紧记下。

 

 

 

将这段代码加到用户控件的构造函数中即可生效。

 

这段代码的主要功能是开启了双缓冲。

平时我以为开双缓冲只需要设置ControlStyles.OptimizedDoubleBuffer为true而已。

但是经过实践才发现,起关键作用的是OptimizedDoubleBuffer和AllPaintingInWmPaint两个。

当这两个都为true的时候。闪烁几乎消失。效果非常好。所以我在这里记下。

给自己,也给大家。

2009-11-10 16:47:16 iteye_18384 阅读数 89
  • winform常用控件

    主要包含内容: 第一讲 课程简介 第二讲 Windows窗体-创建和介绍 第三讲 Windows窗体-属性 第四讲 Windows窗体-方法和事件 第五讲 Windows窗体-MDI窗体和子窗体 第六讲 控件的相关操作 第七讲 Label控件显示世界你好 第八讲Button控件 第九讲TextBox控件 第十讲RichTextBox控件 第十一讲ComboBox控件 等

    3905 人正在学习 去看看 胡延亮
        /// <summary>
        /// 清空所有的文本框
     /// </summary>
        private void ClearAllTextBox()
        {
            foreach (Control control in this.groupBox1.Controls)
            {               
                if(control is TextBox)
                {
                    ((TextBox)control).Text = "";
                }
            }
        }

 其中IF语句也可以写成这样:

 if (control.GetType().ToString()=="System.Windows.Forms.TextBox")

 

如果按钮批量清空所有TextBox、comboBox、checkBox的数据,则代码可以写在这样:

       private void ClearTextBoxAndComboBoxAndCheckBox()
        {

            foreach (Control c in  this.Controls)
            {
                if (c.GetType().ToString().Contains("TextBox"))
                {
                    ((TextBox)c).Text = "";
                }
                if (c.GetType().ToString().Contains("ComboBox"))
                {
                    ((ComboBox)c).Text = "";
                }
                if (c.GetType().ToString().Contains("CheckBox"))
                {
                    ((CheckBox)c).Checked = false;
                }
            }
        } 

 

2011-11-30 14:29:50 iteye_8099 阅读数 246
  • winform常用控件

    主要包含内容: 第一讲 课程简介 第二讲 Windows窗体-创建和介绍 第三讲 Windows窗体-属性 第四讲 Windows窗体-方法和事件 第五讲 Windows窗体-MDI窗体和子窗体 第六讲 控件的相关操作 第七讲 Label控件显示世界你好 第八讲Button控件 第九讲TextBox控件 第十讲RichTextBox控件 第十一讲ComboBox控件 等

    3905 人正在学习 去看看 胡延亮
先通过在ide中拉出这样的效果图 以学习相关属性上面效果的相关代码code<!--<br /><br />code highlighting produced by actipro codehighlighter (freeware)<br />http://www.codehighlighter.com/<br /><br />-->#regionwindows窗体设计器生成的代码///<summary>///设计器支持所需的方法-不要///使用代码编辑器修改此方法的内容。///</summary>privatevoidinitializecomponent(){this.tablelayoutpanel1=newsystem.windows.forms.tablelayoutpanel();this.button1=newsystem.windows.forms.button();this.button2=newsystem.windows.forms.button();this.button3=newsystem.windows.forms.button();this.button4=newsystem.windows.forms.button();this.button5=newsystem.windows.forms.button();this.button6=newsystem.windows.forms.button();this.tablelayoutpanel1.suspendlayout();this.suspendlayout();////tablelayoutpanel1//this.tablelayoutpanel1.cellborderstyle=system.windows.forms.tablelayoutpanelcellborderstyle.single;this.tablelayoutpanel1.columncount=2;this.tablelayoutpanel1.columnstyles.add(newsystem.windows.forms.columnstyle(system.windows.forms.sizetype.percent,50f));this.tablelayoutpanel1.columnstyles.add(newsystem.windows.forms.columnstyle(system.windows.forms.sizetype.percent,50f));this.tablelayoutpanel1.controls.add(this.button1,0,0);this.tablelayoutpanel1.controls.add(this.button2,1,0);this.tablelayoutpanel1.controls.add(this.button3,1,1);this.tablelayoutpanel1.controls.add(this.button4,0,2);this.tablelayoutpanel1.controls.add(this.button5,0,3);this.tablelayoutpanel1.controls.add(this.button6,1,2);this.tablelayoutpanel1.location=newsystem.drawing.point(46,35);this.tablelayoutpanel1.name="tablelayoutpanel1";this.tablelayoutpanel1.rowcount=5;this.tablelayoutpanel1.rowstyles.add(newsystem.windows.forms.rowstyle(system.windows.forms.sizetype.percent,25f));this.tablelayoutpanel1.rowstyles.add(newsystem.windows.forms.rowstyle(system.windows.forms.sizetype.percent,25f));this.tablelayoutpanel1.rowstyles.add(newsystem.windows.forms.rowstyle(system.windows.forms.sizetype.percent,25f));this.tablelayoutpanel1.rowstyles.add(newsystem.windows.forms.rowstyle(system.windows.forms.sizetype.percent,25f));this.tablelayoutpanel1.rowstyles.add(newsystem.windows.forms.rowstyle(system.windows.forms.sizetype.absolute,20f));this.tablelayoutpanel1.size=newsystem.drawing.size(200,195);this.tablelayoutpanel1.tabindex=1;////button1//this.button1.location=newsystem.drawing.point(4,4);this.button1.name="button1";this.tablelayoutpanel1.setrowspan(this.button1,2);this.button1.size=newsystem.drawing.size(75,79);this.button1.tabindex=0;this.button1.text="button1";this.button1.usevisualstylebackcolor=true;////button2//this.button2.location=newsystem.drawing.point(103,4);this.button2.name="button2";this.button2.size=newsystem.drawing.size(75,23);this.button2.tabindex=1;this.button2.text="button2";this.button2.usevisualstylebackcolor=true;////button3//this.button3.anchor=system.windows.forms.anchorstyles.none;this.button3.location=newsystem.drawing.point(112,53);this.button3.name="button3";this.button3.size=newsystem.drawing.size(75,23);this.button3.tabindex=2;this.button3.text="button3";this.button3.usevisualstylebackcolor=true;////button4//this.button4.anchor=((system.windows.forms.anchorstyles)((((system.windows.forms.anchorstyles.top|system.windows.forms.anchorstyles.bottom)|system.windows.forms.anchorstyles.left)|system.windows.forms.anchorstyles.right)));this.button4.location=newsystem.drawing.point(4,90);this.button4.name="button4";this.button4.size=newsystem.drawing.size(92,36);this.button4.tabindex=3;this.button4.text="button4";this.button4.usevisualstylebackcolor=true;////button5//this.button5.anchor=system.windows.forms.anchorstyles.none;this.button5.location=newsystem.drawing.point(12,139);this.button5.name="button5";this.button5.size=newsystem.drawing.size(75,23);this.button5.tabindex=4;this.button5.text="button5";this.button5.usevisualstylebackcolor=true;////button6//this.button6.location=newsystem.drawing.point(103,90);this.button6.name="button6";this.tablelayoutpanel1.setrowspan(this.button6,2);this.button6.size=newsystem.drawing.size(75,79);this.button6.tabindex=5;this.button6.text="button6";this.button6.usevisualstylebackcolor=true;////tablelayoutpanelform//this.autoscaledimensions=newsystem.drawing.sizef(6f,12f);this.autoscalemode=system.windows.forms.autoscalemode.font;this.clientsize=newsystem.drawing.size(292,265);this.controls.add(this.tablelayoutpanel1);this.name="tablelayoutpanelform";this.text="tablelayoutpanelform";this.tablelayoutpanel1.resumelayout(false);this.resumelayout(false);}#endregion
2012-09-04 17:48:59 cpfvjy5058 阅读数 3
  • winform常用控件

    主要包含内容: 第一讲 课程简介 第二讲 Windows窗体-创建和介绍 第三讲 Windows窗体-属性 第四讲 Windows窗体-方法和事件 第五讲 Windows窗体-MDI窗体和子窗体 第六讲 控件的相关操作 第七讲 Label控件显示世界你好 第八讲Button控件 第九讲TextBox控件 第十讲RichTextBox控件 第十一讲ComboBox控件 等

    3905 人正在学习 去看看 胡延亮

C:\diskpart

 

DISKPART> list volume

Volume###       Ltr    Label         Fs     Type Size           Status       Info

---------- --- ----------- ----- ---------- ------- --------- --------

Volume 0     C                        NTFS        Partition          90 GB      Healthy   System

Volume 1         D                        RAW                   Partition          500G       Healthy

Volume 2         E                        RAW        Partition          500G         Healthy

Volume 3         F                          RAW        Partition          2023 MB          Healthy

Volume 4         G                        RAW        Partition          500G       Healthy

Volume 5         H                        RAW        Partition          1023 MB          Healthy

Volume 6         I                         RAW        Partition          500G  GB      ealthy

 

 

 

DISKPART> select volume1

Volume 1 is the selected volume.

DISKPART> remov

DiskPart successfully removed the drive letter or mount point.

 

 

 

DISKPART> list volume

Volume###       Ltr    Label         Fs     Type Size           Status       Info

---------- --- ----------- ----- ---------- ------- --------- --------

Volume 0 C                          NTFS        Partition          90 GB      Healthy   System

Volume 1                                     RAW             Partition          500G       Healthy

Volume 2                                     RAW        Partition          500G         Healthy

Volume 3                                     RAW        Partition          2023 MB          Healthy

Volume 4                                     RAW        Partition          500G       Healthy

Volume 5                                     RAW        Partition          1023 MB          Healthy

Volume 6                                RAW        Partition          500G  GB      Healthy

 

 

注意另一个节点也要确认下盘符是否还在,只需重启就可以了

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25448460/viewspace-742663/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25448460/viewspace-742663/

2012-05-26 15:10:00 weixin_34121304 阅读数 105
  • winform常用控件

    主要包含内容: 第一讲 课程简介 第二讲 Windows窗体-创建和介绍 第三讲 Windows窗体-属性 第四讲 Windows窗体-方法和事件 第五讲 Windows窗体-MDI窗体和子窗体 第六讲 控件的相关操作 第七讲 Label控件显示世界你好 第八讲Button控件 第九讲TextBox控件 第十讲RichTextBox控件 第十一讲ComboBox控件 等

    3905 人正在学习 去看看 胡延亮

  我们在网上登陆的时候有些网站在用户多次输错密码之后会自动把账户冻结,不能在进行登陆,笔者这次做的winform程序就是要实现这种功能。

  功能一:根据数据库字段判断用户名和密码是否匹配;

  功能二:如果输入错误自动记录连续错误次数;

  功能三:如果用户登陆成功之后会自动清除错误次数,使用户仍然可以连续登陆3次;

  首先在winform窗体上拖入两个label和textbox,textbox分别命名为txbUserName,txbPassWord;然后在拖入一个button按钮;双击button按钮写按钮事件,代码如下:

 1         private void button1_Click(object sender, EventArgs e)
 2         {
 3             using (SqlConnection con = new SqlConnection("server=.; database=text; integrated security=SSPI;"))
 4             {
 5                 using (SqlCommand com = new SqlCommand())
 6                 {
 7                     com.CommandText = "select * from T_Users where UserName=@username";
 8                     com.Connection = con;
 9                     con.Open();
10                     com.Parameters.Add(new SqlParameter("username", txbUserName.Text));
11                     //com.Parameters.Add(new SqlParameter("password", textBox2.Text));
12                     using (SqlDataReader read = com.ExecuteReader())
13                     {
14                         if (read.Read())
15                         {
16                             int errortimes = read.GetInt32(read.GetOrdinal("ErrorTimes"));  //读取错误登陆次数
17                             if (errortimes >= 3)        //判断错误次数是否大于等于三
18                             {
19                                 MessageBox.Show("sorry 你已经不能再登陆了!");
20                             }
21                             else
22                             {
23                                 string passwored = read.GetString(read.GetOrdinal("PassWord"));
24                                 if (passwored == txbPassWord.Text)
25                                 {
26                                     MessageBox.Show("登陆成功!");
27                                     this.qingling();                //登陆成功把错误登陆次数清零
28                                 }
29                                 else
30                                 {
31                                     MessageBox.Show("登陆失败!");
32                                     this.leiji();               //登陆失败把错误登陆次数加一
33                                 }
34                             }
35                         }
36                     }
37                 }
38             }
39         }

 

累加错误登陆次数函数
 1         public void leiji()
 2         {
 3             using (SqlConnection con = new SqlConnection("server=.; database=text; integrated security=SSPI;"))
 4             {
 5                 using (SqlCommand com = new SqlCommand())
 6                 {
 7                     com.Connection = con;
 8                     com.CommandText = "update T_Users set ErrorTimes=ErrorTimes+1 where UserName=@username";
 9                     com.Parameters.Add(new SqlParameter("username", txbUserName.Text));
10                     con.Open();
11                     com.ExecuteNonQuery();
12                 }
13             } 
14         }
清零错误登陆次数函数
 1         public void qingling()
 2         {
 3             using (SqlConnection con = new SqlConnection("server=.; database=text; integrated security=SSPI;"))
 4             {
 5                 using (SqlCommand com = new SqlCommand())
 6                 {
 7                     com.Connection = con;
 8                     com.CommandText = "update T_Users set ErrorTimes=0 where UserName=@username";
 9                     com.Parameters.Add(new SqlParameter("username", txbUserName.Text));
10                     con.Open();
11                     com.ExecuteNonQuery();
12                 }
13             }
14         }

  在button事件的代码中笔者使用了using 关于using的用法与好处在【C#】using用法中已经写过。

没有更多推荐了,返回首页