当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();

        }

当c#中变量发生变化时,如何触发代码段

如果我正确理解你的问题,你想每次变量变化时触发一个函数,为此你可以使用事件处理程序。下面是一个非常基本的事件处理程序

的代码示例
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();