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