如何在C#中更改变量时触发代码段

时间:2014-06-25 05:43:41

标签: c# opengl tao-framework

我目前正在使用C#创建模拟。我正在使用OpenGl-TaoFramework。我遇到了一些问题。我在代码中使用了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();


        }

1 个答案:

答案 0 :(得分:0)

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

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