【问题标题】:How do I get an object from another void c#如何从另一个 void c# 获取对象
【发布时间】:2020-06-08 21:01:22
【问题描述】:

我想从Timer_Elapsed 方法更改item.header。我怎样才能实现它? 这是我的代码:

namespace Oceansurfer
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
            System.Timers.Timer timer = new System.Timers.Timer();
            timer.Interval = 5000;
            timer.AutoReset = true;
            timer.Elapsed += Timer_Elapsed;
            timer.Start();
        }

        public void TabView_Loaded(object sender, RoutedEventArgs e)
        {
            TabViewItem item = CreateNewTab(1);
            item.Header = Shared.FileHelper.ReadTitleFromFile();
            (sender as TabView).TabItems.Add(item);
        }
        public void Timer_Elapsed(object sender, ElapsedEventArgs e)
        {    
        }
    }
}

如果你能回答这个问题,我将不胜感激。

【问题讨论】:

  • 对不起,但我完全不清楚你想做什么。你能举个例子更好地解释一下吗?
  • 您是否试图在不同的方法中访问一个方法的局部变量?
  • 是的,我正在尝试这样做。感谢您的快速回复:)
  • 你可以通过将它作为参数传递给将改变它的方法来做到这一点
  • 看到更多你的课会很有帮助。我猜 TabView 是你类的成员变量。在上面的这个方法中,您将一个项目添加到 TabView。因此,您可以通过其他方法访问此 TabView,也可以访问之前添加的项目。

标签: c# .net object uwp void


【解决方案1】:

您可以定义一个私有成员,在这种情况下,当前类的所有方法都可以访问该项目,或者您可以使用 TabView 的 TabItems 来获取最新的项目。另外,如果要在Timer_Elapsed方法中改变TabeViewItem的Header,由于定时器是配合工作线程使用的,UI需要在UI线程中更新,所以需要使用Dispatcher.RunAsync方法回到UI线程.

private TabViewItem currentItem;

public async void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
    await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        //TabViewItem item = Tabs.TabItems[Tabs.TabItems.Count-1] as TabViewItem;
        currentItem.Header = "hello2";
    });

}

private void Tabs_Loaded(object sender, RoutedEventArgs e)
{
    TabViewItem item = CreateNewTab(1);
    item.Header = Shared.FileHelper.ReadTitleFromFile();
    (sender as TabView).TabItems.Add(item);
    currentItem = item;
}

【讨论】:

    【解决方案2】:

    您不能从另一种方法中访问一种方法的局部变量。但是,有多种方法可以在不同的方法中访问同一个对象。程序方式是将其作为一种方法的结果返回和/或将其作为参数传递给另一种方法。面向对象(也是推荐的)方式是,当方法都是同一个类的一部分时,为要在多个方法中访问的对象创建一个字段(或属性)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-08
      • 2013-03-28
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 2021-10-31
      • 1970-01-01
      相关资源
      最近更新 更多