Win7中的自定义控件绘制问题

时间:2012-05-30 15:26:00

标签: c# .net custom-controls

我们有一个只出现在Win7中的绘画问题。它在Win Xp中完美运行。当用户单击某个项目或自定义控件的任何部分(用户控件在下图中以红色矩形标记)时,树状视图和屏幕中的所有控件都会开始闪烁。仅当鼠标指针移出用户控件时,闪烁才会停止。

如何解决问题?

用户控制代码如下所示

namespace NeST.ICE.Screens.ICEJobHistory
{
    public partial class CustomControlPropertGrid : System.Windows.Forms.PropertyGrid    
    {
        public CustomControlPropertGrid()
        {
            InitializeComponent();
            this.DoubleBuffered = true;
        }

        protected override void OnPaint(PaintEventArgs pe)
        {
            // TODO: Add custom paint code here

            // Calling the base class OnPaint
            base.OnPaintBackground(pe);
            base.OnPaint(pe);

        }
        protected override void OnPaintBackground(PaintEventArgs e)
        {

        }


    }
}

数据填写代码如下。 this._waferGrid是CustomControlPropertGrid的对象

 if (dataReader != null && dataReader.Read())
            {
                //FIX_OCT_08: BUG2891 
                WaferProperty wafer = new WaferProperty();

                //FIX_JUN_09:Changed Name to SubstrateID
                wafer.SubstrateID   = dataReader[Constants.NAME_PARAMETER_INDEX].ToString();
                wafer.InCarrier     = dataReader[Constants.SOURCE_INCARRIER_PARAMETER_INDEX].ToString();
                wafer.OutCarrier    = dataReader[Constants.DESTINATION_OUTCARRIER_PARAMETER_INDEX].ToString();
                wafer.InLoadPort    = dataReader[Constants.DESTINATIONSLOT_INLP_PARAMETER_INDEX].ToString();
                wafer.OutLoadPort   = dataReader[Constants.STARTTIME_OUTLP_PARAMETER_INDEX].ToString();
                wafer.StartTime     = dataReader[Constants.WAFER_TIME_PARAMETER_INDEX].ToString();
                wafer.EndTime       = dataReader[Constants.ENDTIME_OPERATION_PARAMETER_INDEX].ToString();
                //<<EHN_AUG_11_WaferLotId 
                //Added the waferLotId parameter to the grid
                wafer.LotID = dataReader[Constants.LOT_ID_PARAMETER_INDEX].ToString();
                //EHN_AUG_11_WaferLotId >>
                //FIX_JUN_09:Changed WaferID to ActualWaferID
                wafer.ActualWaferID = dataReader[Constants.WAFER_STATUS_PARAMETER_INDEX].ToString();
                wafer.RouteRecipe = dataReader[Constants.WAFER_ROUTE_RECIPE_PARAMETER_INDEX].ToString();

                this._waferGrid.SelectedObject =wafer;

            }

enter image description here

0 个答案:

没有答案