技术开发 频道

手把手带你从WPF基础向企业应用进阶

  WinForms实现介绍

  WinForms版本就包含一个Form 和一个展示社区信息的custom UserControl, 这个Form 包含了一个FlowLayoutPanel控件, 它主要的作用就是用来承载每个社区的实例. 那么代码就如下所示:

 

Collapse
public partial class Form1 : Form
{
    
public Form1()
     {
         InitializeComponent();

        
// Create and initialize a usercontrol for each Company.
         foreach(Company com
in Company.GetCompanys())
         {
             CompanyControl comCtrl
= new CompanyControl();
             comCtrl.Company
= com;
             this.flowLayoutPanel.Controls.Add(comCtrl);
         }
     }
}

  CompanyControl是我们创建的一个UserControl,由于每个CompanyControl都要显示一个Company对象的属性值,我在这里使用了BindingSource控件来进行绑定,这样做也是为了和WPF更接近考虑(增强对比性,呵呵)。具体如下截图:

11、WPF和WinForm案例(2)

  如上图所示,我们用了BindingSource来获取数据,但有一个属性除外,那就是Company ID,请看下面代码:

 

Collapse
namespace WinFormsApp
{
    
/// <summary>
    
/// A WinForms control that displays an Company object.
    
/// </summary>
    
public partial class CompanyControl : UserControl
    {
        
public CompanyControl()
        {
            InitializeComponent();

            
// Convert the picture file path to a Bitmap.
            Binding binding
= this.CompanyPicture.DataBindings[0];
            binding.Format
+= this.ConvertFilePathToBitmap;
        }

        void ConvertFilePathToBitmap(
object sender, ConvertEventArgs e)
        {
            e.Value
= Bitmap.FromFile(e.Value as string);
        }

        
public Company Company
        {
            
get { return this.CompanyBindingSource.DataSource as Company; }
            
set
            {
                this.CompanyBindingSource.DataSource
= value;

                
// The Company's picture shows a tooltip of their ID.
                if (value != null)
                {
                    
string msg = "Company ID:  " + value.ID;
                    this.toolTip.SetToolTip(this.CompanyPicture, msg);
                }
            }
        }
    }
}

  这里有几点需要注意.在绑定的时候,我们对PictureFile 字段进行了转换,这个是必须做的. 如果不那样做, 这个图片会绑定失败,因为在绑定的时候它不能自动把string类型直接转化为Image类型.

  现在我们已经把Company绑定到了我们的控件上, 这里我需要给PictureBox一个tooltip的效果. 这个tooltip将显示 Company ID, 前缀显示为 "Company ID:". 现在这个是在代码里面写的,没有在窗体中发现有WPF ToolTip等类似的工具,不知道大家用到过没有?

  总的来说, 这是一个很简单的例子,我们的大部分功能也是用代码没有写代码,是通过visual designer进行实现的.然后通过一部分代码把它衔接起来, 我们看到Windows Forms是一个非常快速和实用的开发平台.

0
相关文章