代码改变世界

C# Dev控件中的 PropertyGridControl 属性控件的基本用法以及排序

2012-08-08 14:24  Andrew.Wangxu  阅读(7857)  评论(0编辑  收藏  举报

在这个例子中将实现让该属性控件实现排序按钮。

效果如图:

 

首先2个按钮是 CheckButton 控件。

然后是一个:PropertyGridControl  控件

 

为了美观一点,将2个CheckButton控件的AllowFocus属性设置为 False

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

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraVerticalGrid;
using DevExpress.Utils;
using DevExpress.XtraBars;
using System.Reflection;

namespace WindowsFormsApplication1
{
    /// <summary>
    /// <para>Demo By Andrew.</para>
    /// <para>Date:2012-8-8 14:23:27</para>
    /// Andrew's Blog : http://www.cnblogs.com/andrew-blog
    /// </summary>
    public partial class XtraForm1 : DevExpress.XtraEditors.XtraForm
    {
        /// <summary>
        /// 设定2个CheckButton按钮的事件、属性初始化
        /// 将PropertyGridControl控件的绑定对象为自己。
        /// </summary>
        public XtraForm1()
        {
            InitializeComponent();


            checkBtnPropertySort.CheckedChanged += new EventHandler(checkBtnSort);
            checkBtnAZSort.CheckedChanged += new EventHandler(checkBtnSort);

            SetBarButtonToolTip(checkBtnPropertySort, "分组排序");
            SetBarButtonToolTip(checkBtnAZSort, "按字母排序");
            this.checkBtnPropertySort.Image = Image.FromFile("Categorized.png");
            this.checkBtnAZSort.Image = Image.FromFile("Alphabetical.png");
            checkBtnPropertySort.Checked = true;

            propertyGridControl.SelectedObject = propertyGridControl;
        }

        //CheckButton.CheckeChange事件
        void checkBtnSort(object sender, EventArgs e)
        {
            CheckButton thisChk = (CheckButton)sender;
            if (thisChk == checkBtnPropertySort)
            {
                if (checkBtnPropertySort.Checked)
                    SetBarButtonDown(checkBtnAZSort, false);
                else
                    SetBarButtonDown(checkBtnAZSort, true);
            }
            else
            {
                if (checkBtnAZSort.Checked)
                    SetBarButtonDown(checkBtnPropertySort, false);
                else
                    SetBarButtonDown(checkBtnPropertySort, true);
            }

            UpdatePropertyGrid();
        }

        //设置按钮的鼠标悬浮气泡提示信息
        static void SetBarButtonToolTip(CheckButton chkBtn, string value)
        {
            SuperToolTip superToolTip = new SuperToolTip();
            ToolTipTitleItem toolTipTitleItem = new ToolTipTitleItem();
            toolTipTitleItem.Text = value;
            superToolTip.Items.Add(toolTipTitleItem);
            chkBtn.SuperTip = superToolTip;
        }

        //设置按钮是否按下
        void SetBarButtonDown(CheckButton chkBtn, bool value)
        {
            chkBtn.CheckedChanged -= new EventHandler(checkBtnSort);
            chkBtn.Checked = value;
            chkBtn.CheckedChanged += new EventHandler(checkBtnSort);
        }

        //更变控件排序方式
        void UpdatePropertyGrid()
        {
            this.propertyGridControl.OptionsView.ShowRootCategories = this.checkBtnPropertySort.Checked;
        }
    }
}

以上代码的Demo下载:https://files.cnblogs.com/andrew-blog/AndrewPropertyGridControlDemo.rar

 

 

 

另外推荐一篇来自DEV控件官方的参考资料:http://documentation.devexpress.com/#WindowsForms/CustomDocument9266

参考:http://www.wxzzz.com/?id=114