首页 / C# / c#在整个类和表单中更改属性
c#在整个类和表单中更改属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#在整个类和表单中更改属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2771字,纯文字阅读大概需要4分钟。
内容图文
![c#在整个类和表单中更改属性](/upload/InfoBanner/zyjiaocheng/664/08cbf176ac464c52bee35601c26443de.jpg)
大家好!
我以某种方式对编码感到陌生,并偶然发现了一个问题.我自己设法找到了解决方案,但是我敢肯定有更好的解决方案!
我将尽我所能描述我的问题,因为我的英语能力很差,并且我的解决方案也可以得到解决.关键是,我想知道通用类中是否有任何解决方案,因为我的解决方案似乎仅特别适合这种情况.
好的,伙计们,我们走了!
节目说明
本程序本身是由三种形式设置的,主要形式是“控制中心”或菜单,另外两种是通过标签显示的计时器,
as you can see here.蓝色计时器正在增加,而绿色计时器则相反.
打开程序后,两个计时器窗体也会打开,即使它们没有运行,我也需要它们.显然,我使用FormMain_Load方法来显示它们:
private void FormMain_Load(object sender, EventArgs e)
{
Form1 timerUp = new Form1();
timerUp.Show();
Form2 timerBreak = new Form2();
timerBreak.Show();
}
问题
现在,这正是我的问题!第二个人点击这两个启动按钮之一,我想在表单上启动计时器(因为我将每个计时器的计时器都放在了自己的表单上).但是如果我用
private void buttonStart_Click(object sender, EventArgs e)
{
timerUp.timer1.Start();
}
为了访问“ timerUp”变量,我无法访问FormMain_Load中的局部变量“ Form1 timerUp”.它说:“变量在当前上下文中不存在”.
如果有人知道一个可能的解决方案,只需打开另一个类中已经打开的窗体上的计时器,我将感到非常高兴.
我的解决方案
作为已经宠坏的人,尽管我对它的设置不满意,但还是设法找到了解决方案.
为了维持我的解决方案,这两个计时器启动了第二个打开的窗体,例如在Form1内部(第一个计时器):
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
}
但是,背后有一些逻辑.我在mainForm内设置了一些公共的静态布尔值,然后通过单击按钮来更改它们.例如:
public partial class FormMain : Form
{
public static bool timer1 = false;
public static bool timer2 = false;
....
private void buttonStart_Click(object sender, EventArgs e)
{
timer1 = true;
}
}
现在,再次在Form1中,我添加了一些if语句来检查这些布尔值.就像这样:
private void timer1_Tick(object sender, EventArgs e)
{
if (FormMain.timer1)
{
....
}
}
显然,该解决方案确实存在一些性能问题:
>计时器一直在运行
>是否必须在每个刻度上检查语句
即使从根本上说,对于我编写的这样一个小程序来说,这些都不重要,但我还是渴望学习如何以正确的方式解决此类问题.
预先感谢您的任何回复!
解决方法:
在列出可能的解决方案之前,我强烈建议您详细了解MVC和/或MVVM(通常在WPF中使用)体系结构模式.他们将指导您如何在GUI应用程序中的类和视图之间分配职责.这将是一个陡峭的学习曲线,但最终还是值得的.
>直接在MainForm的类级别中移动timerUp和timerBreak变量.这样,您将可以通过使用对主窗体的引用来访问它们.
Form1 timerUp;
Form2 timerBreak;
private void MainForm_Load(object sender, EventArgs e)
{
timerUp = new Form1();
timerBreak = new Form2();
timerUp.Show();
timerBreak.Show();
}
>如果您认为将在整个应用程序中引用这两种形式的计时器控件,则可以在主表单中保留对它们的引用.
>您可以使用events通知计时器它们应该开始/停止.这些事件可以在您的MainForm中,也可以在单独的类中.这个单独的类还将包含您的计时器模型(诸如时间,状态等属性),并将通过property change notification事件通知您的计时器.这在MVVM中大量使用.
内容总结
以上是互联网集市为您收集整理的c#在整个类和表单中更改属性全部内容,希望文章能够帮你解决c#在整个类和表单中更改属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。