gpt4 book ai didi

c# - 显示滚动条时面板上的画线消失

转载 作者:行者123 更新时间:2023-11-28 08:06:39 25 4
gpt4 key购买 nike

我有一个面板,其中 AutoScroll 属性为真(AutoSize 为假)。使用变量 Graphics g 我在这个面板上画了一些线。问题是当滚动条出现时,在执行期间创建的所有行都消失了。知道为什么和一些可能的解决方案吗?

我尝试使用另一个可以绘制线条的面板,将其背景色设置为透明,但看起来不太好,因为我拥有的其他内容(如文本框等)都隐藏在新面板中

这是我的一些代码和一些屏幕截图,希望对您有所帮助!谢谢

 private void fwd_exmem_hazard()
{
int poss = 0;
int poss2 = poss+1;
List<mystruct> pipe = new List<mystruct>();
pipe = queue1.ToList();
while (poss2 < fwd1_list.Count)
{
try
{
if (((fwd1_list[poss].cycle == 3) && (fwd1_list[poss].rd == fwd1_list[poss2].rs) && (fwd1_list[poss].reg_write) && (fwd1_list[poss].rd != 0))
|| (fwd1_list[poss].cycle == 3 && (fwd1_list[poss].rd == fwd1_list[poss2 + 1].rs) && (fwd1_list[poss].reg_write) && (fwd1_list[poss].rd != 0)))
{

Graphics g; g = panel3.CreateGraphics();
Pen pen = new Pen(Color.Red);
Point p1 = new Point(pipe[poss].location.X+30, pipe[poss].location.Y);
Point p2 = new Point(pipe[poss2].location.X-10, pipe[poss2].location.Y);
g.DrawLine(pen,p1, p2);
fwd_count++;
}
if (((fwd1_list[poss].cycle == 3) && (fwd1_list[poss].rd == fwd1_list[poss2].rt) && (fwd1_list[poss].reg_write) && (fwd1_list[poss].rd != 0))
|| (fwd1_list[poss].cycle == 3 && (fwd1_list[poss].rd == fwd1_list[poss2 + 1].rt) && (fwd1_list[poss].reg_write) && (fwd1_list[poss].rd != 0)))
{

Graphics g; g = panel3.CreateGraphics();
Pen pen = new Pen(Color.Orange);
Point p1 = new Point(pipe[poss].location.X+30, pipe[poss].location.Y);
Point p2 = new Point(pipe[poss2].location.X-10, pipe[poss2].location.Y);
g.DrawLine(pen, p1, p2);
fwd_count++;

}
poss++; poss2++;
}
catch { break; }
}

}

mystruct 是我创建的自定义结构,queue1 是一个全局队列

Before scrollbars appear

after scrollbars appear

最佳答案

发生这种情况是因为当面板刷新时它会调用绘画事件并从头开始重新绘制自身,因此您的线条会消失,因此您需要将代码放在面板绘画事件中。

关于c# - 显示滚动条时面板上的画线消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29458564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com