有没有办法在c#4.5中存储临时整数值?

时间:2014-05-20 05:30:37

标签: c# wpf variables wpf-controls

我正在创建WPF应用程序。我需要在一个方法中的某个变量中存储临时值,我需要在另一个方法中返回该值。有没有办法使用WPF将临时值存储在变量中?


来自评论:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    count++; 
    for (int i = 1; i <= count; i++) 
    { 
        var tb = new TextBox(); 
        mycanvas.Children.Add(tb);  
        tb.Name = "txtbox"+i; 
        tb.Width = 100;  
        Canvas.SetLeft(tb,50); 
        Canvas.SetTop(tb, i*20); 
    } 
} 

2 个答案:

答案 0 :(得分:1)

我认为你在这里有一点误会...... WPF(Windows Presentation Foundation),是一种替代WinForms的技术......

存储临时整数将完全像在WinForms,控制台应用程序或dll中完成。

您将其保存为另一种方法可以看到的变量(取决于它的位置),或将其作为参数发送。

如果您正在谈论MVVM,事情会变得更有趣,但您仍然可以存储和发送临时变量......

话虽如此,您还可以隐藏应用程序设置中的变量,并根据需要使用它们(或您可以设置的默认值)。以下是有关此选项的更多信息:MSDN: Application Settings Overview


如果你想在每个i上做一些事情,那么 Jossef Harush 就是钱,否则(或者你也可以做以下事情:

private int global_variable_name;

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    count++; 
    for (int i = 1; i <= count; i++) 
    { 
        var tb = new TextBox(); 
        mycanvas.Children.Add(tb);  
        tb.Name = "txtbox"+i; 
        tb.Width = 100;  
        Canvas.SetLeft(tb,50); 
        Canvas.SetTop(tb, i*20); 
        // You can set global_variable_name here, but it'll be 
        // silly to set it to `i`, since it's changing
        global_variable_name = 8;
    } 
} 

private void SomeOtherMethod() {
    // you can use global_variable_name here
    var sum = global_variable_name + 3;
}

答案 1 :(得分:0)

欢迎来到StackOverflow,我同意@Noctis的答案。

另外(在阅读你的评论后),

如果您想将当前循环索引传递给自定义方法,那么您应该这样做:

    private void Button_Click(object sender, RoutedEventArgs e)
    {

        int count = 10;

        count++; 

        for (int i = 1; i <= count; i++) 
        {
            var tb = new TextBox();
            mycanvas.Children.Add(tb); 
            tb.Name = "txtbox" + i; 
            tb.Width = 100; 
            Canvas.SetLeft(tb, 50); 
            Canvas.SetTop(tb, i * 20); 

            // My custom method
            MyMethod(i);
        }
    }

    private void MyMethod(int i)
    {
        // Do something with i

        Console.WriteLine(i);
    }