我如何从另一个void c#中获取一个对象
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)
{
}
}
}
拜托,如果你能回答这个问题,我将不胜感激。
您不能从另一个方法中访问一个方法的局部变量。但是,有多种方法可以在不同的方法中访问同一个对象。程序方法是 return 它作为一种方法的结果 and/or 将它作为参数传递给另一种方法。面向对象(推荐)的方法是,当方法都是同一个class的一部分时,为要在多个方法中访问的对象创建一个字段(或属性)。
您可以定义一个私有成员,在这种情况下,当前class的所有方法都可以访问该项目,或者您可以使用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;
}
我想从 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)
{
}
}
}
拜托,如果你能回答这个问题,我将不胜感激。
您不能从另一个方法中访问一个方法的局部变量。但是,有多种方法可以在不同的方法中访问同一个对象。程序方法是 return 它作为一种方法的结果 and/or 将它作为参数传递给另一种方法。面向对象(推荐)的方法是,当方法都是同一个class的一部分时,为要在多个方法中访问的对象创建一个字段(或属性)。
您可以定义一个私有成员,在这种情况下,当前class的所有方法都可以访问该项目,或者您可以使用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;
}