当c#中变量发生变化时,如何触发代码段
本文关键字:何触发 代码 变化 变量 | 更新日期: 2023-09-27 18:10:06
我目前正在c#中创建一个模拟。我使用的是opengl - taframework。我遇到了一些问题。我在代码中使用Glut.glutMainLoop();
函数,但我知道这个函数永远不会返回,程序停止了。如果我点击按钮后改变变量,它的工作原理,因为我想,但问题是,我不想使用按钮。但如果不这样的话,我就无法再次成功地回忆起Glut.glutMainLoop();
。任何帮助都将非常感激。
private void button1_Click(object sender, EventArgs e)
{
i = Convert.ToInt32(textBox1.Text);
j = Convert.ToInt32(textBox2.Text);
k = Convert.ToInt32(textBox3.Text);
l = Convert.ToInt32(textBox4.Text);
m = Convert.ToInt32(textBox5.Text);
Glut.glutMainLoop();
}
如果我正确理解你的问题,你想每次变量变化时触发一个函数,为此你可以使用事件处理程序。下面是一个非常基本的事件处理程序
的代码示例public class Program
{
public delegate void ChangedEventHandler(object sender, EventArgs e);
public static void Main()
{
var glut = new GlutVar();
glut.Change += DoWhenEventTriggers;
glut.GlutInt = 5;
}
public static void DoWhenEventTriggers(object sender, EventArgs e)
{
Console.WriteLine("Event triggered");
}
private class GlutVar
{
public event ChangedEventHandler Change;
private int _GlutInt = 0;
public void OnChange()
{
if(Change != null)
Change(this,EventArgs.Empty);
}
public int GlutInt {
get
{
return _GlutInt;
}
set
{
_GlutInt = value;
OnChange();
}
}
}
}
DoWhenEventTriggers
将在每次变量Glutint
更改时运行,因此您可以做类似的设置,允许您的代码在变量更改时触发Glut.glutMainLoop();
。