我们有一个只出现在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;
}