簡體   English   中英

如何從另一個 void c# 獲得 object

[英]How do I get an object from another void c#

我想從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)
        {    
        }
    }
}

請,如果你能回答這個問題,我將非常感激。

您可以定義一個私有成員,在這種情況下,當前 class 的所有方法都可以訪問該項目,也可以使用 TabView 的 TabItems 獲取最新項目。 另外,如果要在Timer_Elapsed方法中改變TubeViewItem的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;
}

您不能從另一種方法中訪問一種方法的局部變量。 但是,有多種方法可以通過不同的方法訪問同一個 object。 程序方式是將其作為一種方法的結果返回和/或將其作為參數傳遞給另一種方法。 object 面向(和推薦)的方式是,當方法都是同一個 class 的一部分時,為要在多個方法中訪問的 object 創建一個字段(或屬性)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM