.net – 为什么winform面板仅在鼠标悬停或鼠标点击时更新?
发布时间:2020-12-14 01:39:49 所属栏目:Linux 来源:网络整理
导读:我创建了一个测试程序,它应该在 linux(PC LinuxOS)下反复地来回更改面板的背景颜色,但它并没有真正起作用.要么它只更新面板的背景颜色只有当你点击某个东西或鼠标悬停在winform上然后它停止或程序在运行一段时间后完全崩溃. 以下是2个面板,一个按钮和一个计
我创建了一个测试程序,它应该在
linux(PC
LinuxOS)下反复地来回更改面板的背景颜色,但它并没有真正起作用.要么它只更新面板的背景颜色只有当你点击某个东西或鼠标悬停在winform上然后它停止或程序在运行一段时间后完全崩溃.
以下是2个面板,一个按钮和一个计时器的winform外观: 这是它背后的代码: namespace TestIndicator; interface uses System.Drawing,System.Collections,System.Collections.Generic,System.Windows.Forms,System.ComponentModel; type /// <summary> /// Summary description for MainForm. /// </summary> MainForm = partial class(System.Windows.Forms.Form) private method d_Click(sender: System.Object; e: System.EventArgs); method timer1_Tick(sender: System.Object; e: System.EventArgs); protected method Dispose(disposing: Boolean); override; public constructor; end; var TurnOnRx,TurnOnTx:Boolean; implementation {$REGION Construction and Disposition} constructor MainForm; begin // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // TurnOnRx := true; TurnOnTx := true; end; method MainForm.Dispose(disposing: Boolean); begin if disposing then begin if assigned(components) then components.Dispose(); // // TODO: Add custom disposition code here // end; inherited Dispose(disposing); end; {$ENDREGION} method MainForm.d_Click(sender: System.Object; e: System.EventArgs); begin timer1.Enabled := not timer1.Enabled; end; method MainForm.timer1_Tick(sender: System.Object; e: System.EventArgs); begin if TurnOnTx then begin TurnOnTx:=false; TxLight.BackColor := Color.Red; end else begin TurnOnTx:=true; TxLight.BackColor := Color.black; end; if TurnOnRx then begin TurnOnRx := false; RxLight.BackColor := Color.Lime; end else begin TurnOnRx := true; RxLight.BackColor := Color.Black; end; end; end. 解决方法
也许定时器间隔太短,颜色变化太快?
namespace TestIndicator; interface uses System.Drawing,TurnOnTx:Boolean; implementation {$REGION Construction and Disposition} constructor MainForm; begin // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // TurnOnRx := true; TurnOnTx := true; timer1.Inverval := 1000; end; method MainForm.Dispose(disposing: Boolean); begin if disposing then begin if assigned(components) then components.Dispose(); // // TODO: Add custom disposition code here // end; inherited Dispose(disposing); end; {$ENDREGION} method MainForm.d_Click(sender: System.Object; e: System.EventArgs); begin timer1.Enabled := not timer1.Enabled; end; method MainForm.timer1_Tick(sender: System.Object; e: System.EventArgs); begin if TurnOnTx then begin TurnOnTx:=false; TxLight.BackColor := Color.Red; end else begin TurnOnTx:=true; TxLight.BackColor := Color.black; end; if TurnOnRx then begin TurnOnRx := false; RxLight.BackColor := Color.Lime; end else begin TurnOnRx := true; RxLight.BackColor := Color.Black; end; TxLight.Refresh(); RxLight.Refresh(); Application.DoEvents(); end; end. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – Puppet – 删除登录的用户?
- linux – xprop设置atom属性的多个字段
- 为ARM体系结构编译Linux程序 – 在主机操作系统上运行
- linux – 使用regexp进行Bash排序
- Linux中的getrusage(RUSAGE_THREAD,…)和clock_gettime(CLO
- LINUX实战:CentOS 7下ELK5.4.1配置部署
- linux – 为自动化模拟USB设备
- linux – 客户端在故障转移期间未切换到辅助DNS服务器
- 【Linux】【Kibana】解决Kibana启动失败:Data too large问
- linux – 在bash shell中的for循环中连接字符串变量