首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Paint事件持续触发

Paint事件持续触发
EN

Stack Overflow用户
提问于 2021-10-22 01:12:49
回答 1查看 43关注 0票数 0

我一直致力于在C#中绘制网格,这很有效!但不知何故,我总是遇到一些DrawGrid方法的问题。我发现每次添加标签时,它都会被重新绘制,并且在添加之后不断地重绘。下面是我的代码:

代码语言:javascript
运行
AI代码解释
复制
Rectangle[,] rec = new Rectangle[6,6];
Label label_1 = new Label();
Label label_2 = new Label();

public Reversi()
        {
            ClientSize = new Size(500,425);
            BackColor = Color.DarkGreen;
            NewGame();
            Paint += DrawGrid;
        }

public void NewGame()
        {
            // here is some more stuff which I will leave out for the sake of clarity
            for (int i = 0; i < grspel; i++)
            {
                for (int j = 0; j < grspel; j++)
                {
                    rec[i, j] = new Rectangle(50 + i * 50, 100 + j * 50, 50, 50);
                }
            }
            DrawLabels();
        }

public void DrawLabels()
        {
            label_1.Location = new Point(20, 50);
            label_1.Text = "Zwart: " + zwart;
            Controls.Add(label_1);

            label_2.Location = new Point(330, 50);
            label_2.Text = "Wit: " + wit;
            Controls.Add(label_2);
        }

public void DrawGrid(object o, PaintEventArgs pea)
        {
            MessageBox.Show("test");
            for (int i = 0; i < 6; i++)
            {
                for (int j = 0; j < 6; j++)
                {
                    pea.Graphics.DrawRectangle(new Pen(Brushes.Black), rec[i,j]);
                }
            }
        }

为了可视化我的问题,我在DrawGrid方法的开头放置了MessageBox.Show("test");。我的其余代码(这里没有)使用这个方法,并且不能正常工作。我已经将问题的范围缩小到这里。

去掉Controls.Add(label_i)可以解决这个问题,但我需要标签。为什么会发生这种情况,更重要的是,我如何解决它?

EN

回答 1

Stack Overflow用户

发布于 2021-10-22 01:38:28

您添加了一个标签,因此会有一个UI更改并需要重新绘制的事件。它应该绘制添加的标签,对吗?我想这是意料之中的。

您不必每次都将标签添加到控件列表中。只需添加它们一次(例如在Form.Load中)。

但是,更改标签的位置可能还需要重新绘制。它应该在新的位置绘制标签,对吗?但你的位置也是固定不变的。只需设置一次位置。

重新绘制是正常和良好的,因为它保持了内容的更新。这应该不是问题。那么,你为什么不喜欢呢?它可能会导致闪烁,而你不喜欢这样。

显示一个MessageBox可能也不是一个好主意。如果MessageBox在窗体前面,则需要重新绘制MessageBox后面的部分。

你可以的

,但我需要标签

实际上你不需要。你可以使用Graphics.DrawString()而不是标签。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69674302

复制
相关文章
Chrome的First Paint触发的时机探究
前言 First paint 直译过来的意思就是浏览器第一次渲染(paint),在First paint之前是白屏,在这个时间点之后用户就能看到(部分)页面内容。 所以研究这个First Paint的触发时机对于优化浏览器页面的首屏渲染时间有很重要的作用。 在正题开始之前,先说下浏览器的页面的加载流程(大体过程是这样,并不精确,只是为了帮助理解后面内容): 浏览器输入url,浏览器发送请求到服务器,服务器将请求的HTML返回给浏览器。 浏览器下载完成HTML(Finish Loading HTML)之
用户1749219
2018/07/05
1.8K1
Jenkins触发构建--事件触发
事件触发就是发生了某个事件就触发pipeline执行,这个事件可以是你能想到的任何事件,比如手动在界面上触发、其它job主动触发、HTTP API Webhook触发等。
陈不成i
2021/06/02
6K0
Chrome的First Paint触发的时机探究
前言 First paint 直译过来的意思就是浏览器第一次渲染(paint),在First paint之前是白屏,在这个时间点之后用户就能看到(部分)页面内容。 所以研究这个First Paint的触发时机对于优化浏览器页面的首屏渲染时间有很重要的作用。 在正题开始之前,先说下浏览器的页面的加载流程(大体过程是这样,并不精确,只是为了帮助理解后面内容): 浏览器输入url,浏览器发送请求到服务器,服务器将请求的HTML返回给浏览器。 浏览器下载完成HTML(Finish Loading HTML)之
用户1749219
2018/05/16
2.8K0
代码触发,手动触发touchstart事件,touch事件,click事件,自定义事件
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/150775.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
5K0
onbeforeunload事件_pageload事件何时触发
注意:为了防止不需要的弹出窗口,浏览器可能不会显示在beforeunload事件处理程序中创建的提示,除非页面已与之交互,甚至根本不显示它们。
全栈程序员站长
2022/11/03
3K0
aos 事件触发失败
项目中遇到这个问题,网页往下滑动时加载 aos 事件触发不了,原因也很简单,因为 aos.js 是在页面加载时获取页面高度从而绑定一些事件进去,但是如果这个文件加载速度比框架加载的快,会导致两者高度不一致,从而动画效果触发失败。
子舒
2023/08/23
4240
js触发全屏事件
让用户端JS触发指的就是让用JS监听用户的操作事件,通过JS程序去实现F11全屏。这个事件可以是一个按钮的点击事件,当然也可以是键盘事件,比如用户按下F11。     1.F11键盘事件触发   当用户按下F11事件,浏览器为触发自身全屏功能,这个过程我们一般是不可控制的,即使是监听了F11的键盘事件,退出全屏的时候,我们也捕捉不到退出全屏触发的事件。所以,我们就用程序自己去实现F11的功能,首先需要禁用浏览器默认的事件动作。
山河木马
2019/03/05
16.2K0
spreadTrading模块事件触发机制
本文主要介绍了价差交易模块的事件触发机制。感谢‘次第花开’和‘用户名呀’在维恩的派论坛里的分享!
用Python的交易员
2018/07/26
2.6K0
spreadTrading模块事件触发机制
js 手动触发input事件
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138867.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/02
10.9K0
探索 Flutter 模拟事件触发
如果可以模拟 PointerEvent 进行分发,那么在应用中就可以通过 代码 来触发手势事件,这样就能解放双手。如果结合语音监听,通过代码处理,说话也能触发手势操作,岂不美哉。 作为探索完 手势机制 和 滑动机制 ,又有完成这两本小册的我,感觉这个问题应该可解。下面就将整个问题的解决过程进行梳理,带大家再认识一下手势底层的相关实现。
张风捷特烈
2022/03/18
2.9K0
探索 Flutter 模拟事件触发
js后退按钮事件触发
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164172.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/15
10.9K0
WdatePicker改变事件触发优化
如上,使用onpicked来绑定blur事件,就会在选择日期后自动触发onchangge事件
用户9131103
2023/07/17
3580
checkbox选中触发事件_jquery select change事件
<asp:DataGrid id=”DataGrid1″ runat=”server” AutoGenerateColumns=”False”> <Columns> <asp:BoundColumn DataField=”txtId”></asp:BoundColumn> <asp:BoundColumn DataField=”txtName”></asp:BoundColumn> <asp:TemplateColumn> <ItemTemplate> <asp:ImageButton id=”btnItem” runat=”server” CommandName=”LookDetail”></asp:ImageButton> <asp:DropDownList id=”ddl” runat=”server” AutoPostBack=”True”> <asp:ListItem Value=”asdf”>asdf</asp:ListItem> <asp:ListItem Value=”asdfasdf”>asdfasdf</asp:ListItem> <asp:ListItem Value=”wrwwewewee”>wrwwewewee</asp:ListItem> </asp:DropDownList> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid>
全栈程序员站长
2022/10/01
4.3K0
echarts ProfileyAxis xAxis触发鼠标事件
triggerevent 可以用来触发指定对象的指定事件,并且立即执行该事件中的脚本。
李维亮
2021/07/08
2.7K0
JavaScript 各种事件触发总结
鼠标 Click: 鼠标在一个对象上左键点击触发Click事件,对象包括button,document,checkbox,link,radio,submit.
王瑞MVP
2022/12/28
4K0
golang怎么触发读事件的?
首先我们了解一个结构体。golang中所有的网络事件和文件读写都用fd进行标识(位于internal包下)。
用户7705674
2021/09/24
1.4K0
关于 title 属性导致触发 mousedown 事件时连带触发 mousemove
  大家都知道,鼠标点击的整个事件的执行流程是:mousedown -> mouseup -> click ,而拖放的整个流程是:mousedown -> mousemove -> mouseup -> click
胡尐睿丶
2022/03/28
1.3K0
使用eventBus事件的重复触发事件问题的解决
在单页应用中,在 A 页面中触发事件,然后在 B 页面中对这个事件进行响应是一个很常见的需求,那么当有这种需求的时候要怎么实现呢。有两种方案可以实现:
用户2305169
2018/07/24
3.7K0
持续集成九 gitee webhook 触发构建
官网插件教程:https://gitee.com/help/articles/4193#article-header11
用针戳左手中指指头
2021/01/29
1.3K0
持续集成九 gitee webhook 触发构建
初学java之触发响应事件
1 2 import java.awt.*; 3 import javax.swing.*; 4 import java.awt.event.*; 5 6 class WindowActionEvent extends JFrame 7 { 8 JTextField text; //声明一个文本区 9 ActionListener listener ; //listener是监视器 10 //设置一个默认的构造函数 11 public Wind
Gxjun
2018/03/22
1.2K0

相似问题

WindowsFormHost Paint事件未触发

12

事件持续触发

30

事件持续触发

10

TreeView事件持续触发

10

单击事件持续触发

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档