C# 在cwinform中使用面板中的固定元素执行滚动和鼠标滚轮操作时,如何防止像素混合

C# 在cwinform中使用面板中的固定元素执行滚动和鼠标滚轮操作时,如何防止像素混合,c#,winforms,scroll,mousewheel,C#,Winforms,Scroll,Mousewheel,我试图做滚动和鼠标滚轮,并在其中的文本框面板拖动。我必须让一些文本框固定位置,但这样做,我有一些像素的问题,而旋转或拖动或滚动。我不知道是否有什么方法可以解决这个问题。如果有人知道答案,并且他/她愿意提供帮助,请放心。 我将使用以下代码: 此代码位于从Dynamics NAV调用的函数中,将创建以下操作: #region PROPRIETES DU PANEL pnOperation.Name = idOperationL.ToString(); pnOpera

我试图做滚动和鼠标滚轮,并在其中的文本框面板拖动。我必须让一些文本框固定位置,但这样做,我有一些像素的问题,而旋转或拖动或滚动。我不知道是否有什么方法可以解决这个问题。如果有人知道答案,并且他/她愿意提供帮助,请放心。 我将使用以下代码:

此代码位于从Dynamics NAV调用的函数中,将创建以下操作:

#region PROPRIETES DU PANEL

        pnOperation.Name = idOperationL.ToString();
        pnOperation.BorderStyle = BorderStyle.FixedSingle;
        pnOperation.BackColor = Color.LightGray;
        pnOperation.Size = new Size(220, 40);
        pnOperation.Top = posOperationL * 40;
        pnOperation.AllowDrop = true;

        if (nRolesG > 6)
        {
            //I fixed the operation here so they will stay at position 0
            pnOperation.Top = posOperationL * 40;
            pnOperation.Left = 0;

            MainPanel.MouseWheel += (senderL, eL) =>
            {
                pnOperation.Left = 0;
                pnOperation.Invalidate();
            };
            MainPanel.Scroll += (senderL, eL) =>
            {
                pnOperation.Left = 0;
                pnOperation.Invalidate();
            };
        }                        

        #endregion
截图

截图


提前谢谢

请发布屏幕截图。是否已经发布Sr.SinatrIs it所有者绘制的面板?在滚动时尝试调用面板失效,可能是使用事件。否则,展示你是如何做的固定元素部分,你可能会做错,可能会再次修复面板失效。我更新了帖子,向你展示我如何修复。我设置了一个条件,将操作固定在主面板的左侧。因此,每当有滚动或鼠标滚轮操作时,如果滚动是水平的,则应保持在该位置。如果是垂直的,那么我应该能够滚动。因为角色正好相反。我不知道我解释得很好。无效化不起作用,所以可能我做错了,你怎么看?再次感谢你用代码修复我主面板左侧的操作。我认为,您试图实现的是所谓的冻结列。这是DataGridView中的标准功能,请从框中查看。创建并在面板上放置许多控件不是最佳的,不管您如何操作,都会出现性能问题和图形故障,这些问题大多通过重新绘制来修复-调用Panel Invalidate。您是否考虑过使用所有者绘制的DataGridView?