【C#】编码技巧---一些有趣的功能代码段

站在巨人的肩膀上(Standing on Shoulders of Giants), 利用互联网的红利,以下是找到的一些可能会给大家一些启发的编码技巧。


01 如何以最顶层方式显示程序窗体 —38

此编程技巧主要介绍了如何设置TopMost属性实现以最顶层方式显示应用程序窗体。

一般情况下,应用程序西黄提只有在当前具有焦点的情况下,才显示在其他应用程序的前端(顶层),否则应用程序窗体界面就会被其他当前具有焦点的应用程序界面所掩盖;但是在有的情况下,应用程序需要在任何情况下都处于其他应用程序的前端,即最顶层显示窗体。

private void button1_Click(object sender , EventArgs e)
{ // 以最顶层方式显示窗体
 this.TopMost =true;
}
private void button2_Click(object sender, EventArgs e)
{ //以正常方式显示窗体
  this.TopMost=false;

}

02 如何使用图像创建皮肤程序窗体 —39

此编程技巧主要介绍了如何根据图像样式创建程序窗体以界面并进行变换,即通常所说的程序窗体界面。

实例程序执行后,将根据图像显示一个不规则的窗体界面,单击“皮肤一”按钮,则根据图像显示该程序另一个不规则的窗体界面;单击“皮肤二”按钮,则显示第一个不规则的窗体界面。

在.NET中,可以通过设置应用程序窗体IDE公共属性来实现这种个性化的窗体界面效果。缺省情况下,.NET创建的Windows应用程序窗体有一个TransparencyKey属性,该属性能够设置窗体透明区域的颜色。(有点小神奇,可以玩玩)

private void Form1_Load(object sender, EventArgs e)
{ // 使用图像创建皮肤窗体
  this.TransparencyKey =Color.White;
  this.FormBorderStyle=FormBorderStyle.None;
  this.BackgroundImage=Image.FormFile("Show1.bmp");

}
private void button1_Click(object sender, EventArgs e)
{//皮肤一
  this.backgroundImage =Image.FromFile("Show2.bmp");

}
private void button2_Click(object sender, EventArgs e)
{ //皮肤二
 this.BackgroundImage = Image.FromFile("Show1.bmp");

}

03 如何使用文字线条创建程序窗体 —40

此编程技巧主要介绍了如何设置Region属性实现以文字线条轮廓创建应用程序窗体。实例程序执行后,将显示两个汉字作为应用程序窗体。
在.Net中,应用程序窗体有一个Region属性,该属性能够根据System.Drawing.Region实例中的图形、文字等一个或多个对象构造程序窗体,因为通过对该属性的设置可以创建多种异性风格的窗体。

其关键实现代码如下:

private void Form1_Load(object sender, EventArgs e)
{ //使用文字线条轮廓创建窗体
  this.BackgroundImage =Image.FromFile("Water lilies.jpg");
  Graphics g =this.CreateGraphics();
  g.Clear(Color.White);
  // 设定文本输出质量
  g.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
  g.SmoothingMode = SmoothingMode.AntiAlias;
  FontFamily MyFamily= new FontFamily("隶书");
  // 创建路径区域
  Graphicspath MyPath = new GraphicsPath();
  // 向区域中追加文本
  StringFormat MyFormat= new StringFormat();
  Point MyFont =new Point(0,30);
  MyPath.AddString("重庆",MyFamily,0,180,MyPoint,MyFormat);
  pen Mypen =new Pen(Color.Red);
  //绘制路径
  g.DrawPath(MyPen, Mypath);
  //从路径中构造区域
  this.Region = new System.Drawing.Region(MyPath);


}

04 如何使用URL历史记录自动完成ComboBox —-47

此编程技巧主要介绍了如何设置ComboBox控件的AutoCompleteSource属性实现URL历史记录自动完成ComboBox。也就是说,当用户在ComboBox控件中输入一个字符时,ComboBox控件会自动在URL历史记录中列出最有可能与之匹配的选项供用户选择,如果符合用户的要求,则直接选择之,从而减少了用户在ComboBox控件中的数据输入,这与IE浏览器的”地址(D)”栏组合框的输入功能完全相同。

要实现该功能,需要设置ComboBox控件的自动完成模式,常用的模式是下拉列表建议完成字符串,即设置ComboBox 控件的AutoCompleteMode 属性。然后可以选择AutoCompleteSource 枚举的一下四个成员之一设置ComboBox控件的AutoCompleteSource 属性,从而确定怎样使用URL历史记录来自动完成ComboBox控件。
四个AutoCompleteSource枚举成员分别是:
(1) AllSystemSources 成员。该成员将FileSystem和AllUrl的等效项指定为自动完成数据源。
(2) All Url成员。 该成员将HistoryList 和 RecentlyUsedList 的等效项指定为自动完成数据源。
(3)HistoryList成员。该成员包括历史记录列表中的统一资源定位器(URL)。
(4)RecentlyUsedList 员。该成员包括最近使用的URL列表中的统一资源定位器(URL)

private void button3_Click(object sender, EventArgs e)
{ //使用URL历史记录自动完成ComboBox
  this.comboBox2.AutoCompleteMode = AutoCompleteMode.SuggestAppend ;
  // this.ComboBox2.AutoCompleteSource = AutoCompleteSource.AllUrl;
  // this.ComboBox2.AutoCompleteSource = AutoCompleteSource.HistoryList;
  // this.ComboBox2.AutoCompleteSource = AutoCompleteSource.RecentlyUsedList;
  this.ComboBox2.AutoCompleteSource = AutoCompleteSource.AllSystemSources;

}

05 如何使用FlowLayoutPanel换行布局控件 —85

此编程技巧主要介绍了如何使用FlowLayoutPanel控件实现窗体控件根据窗体大小自动换行或换列布局。
在.NET中,FlowLayoutPanel控件沿水平或垂直流方向排列其内容,它使其中的控件可以从一行换到下一行或从一列换到下一列,甚至可以对其中的控件外观进行剪裁,而不是进行换行。

属性 说明
WrapContents 指定是换行还是剪裁控件的内容(子控件)
FlowDirection 是一个枚举类型,指定流方向,控件可以再从右向左(RTL)的布局中正确地反转它的流方向
private void Form1_Load(object sender, EventArgs e)
{ //使用FlowLayoutPanel实现窗体控件根据窗体大小自动换行或换列布局
  System.Windows.Forms.FlowLayoutPanel  flowLayoutPanel1;
  System.Windows.Forms.RichTextBox richTextBox1;
  //flowLayoutPanel1
  flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
  flowLayoutPanel1.Dock =System.Windows.Forms.DockStyle.Fill;
  flowLayoutPanel1.Name ="flowLayoutPanel1";
  //richTextBox1
  for (int i =0 ; i<50 ; i++)
  {
   richTextBox1= new System.Windows.Forms.RichTextBox();
   richTextBox1.Size=new System.Drawing.Size(50,20);
   flowLayoutPanel1.Controls.Add(richTextBox1);
  } 
  Controls.Add(flowLayoutPanel1);

}

下期更新内容

06 如何使用SplitContainer 分隔窗体控件 –86
07 如何使DataGrid 列宽为单元格文本的最大长度—91
08 如何使用LinkLabel 控件制作超级链接 –96
09 如何使用媒体播放器收听网络电台 —108
10 如何使用互斥量禁止程序运行两个实例—111
11 如何获取指定进程的模块详细信息 –113
12 如何使用monitor同步两个线程 — 118


为什么不一次性更新完?
因为,博主敲字敲累了,这个理由够吗?

除非,你们给我点赞,,,

猜你喜欢

转载自blog.csdn.net/cocowu892/article/details/80193901
今日推荐