2011-11-13 2 views
0

内のオブジェクトを使用する方法は私のMainPage.xaml.cs内部の私のコードだEventHandlerの

public MainPage() 
{ 
    InitializeComponent(); 
    DispatcherTimer dt = new DispatcherTimer(); 
    dt.Interval = new TimeSpan(0, 0, 0, 0, 1000); // 1 Second 
    dt.Tick += new EventHandler(dtTick); 
} 

今私が持っているメインページConstractorとdtTick EventHandlerの後にスタートボタンへのために何かしてイベントハンドラを実行するには作るタイマーは

void dtTick(object sender, EventArgs e) 
{ 
    var time = DateTime.Parse(theTimer.Text); 
    time = time.AddSeconds(1); 
    theTimer.Text = time.ToString("HH:mm:ss"); 
} 

private void startButton_Click(object sender, RoutedEventArgs e) 
{ 
    dt.Start(); 
} 

だから私の質問はどのように私は)(dt.Startを作ることができる方法で動作します。作品は、私のMainPage()にあるオブジェクト上で呼び出されるメソッドであるためです。

+0

はこのWPFやSLまたは他に何である:あなたがする必要がどのような

は、あなたがMainPage.xaml.cs内の任意の場所にアクセスすることができ、モジュールレベルでdtを宣言するのですか? –

+0

Windows Phoneアプリケーション –

+2

キーワードは[scope](http://en.wikipedia.org/wiki/Scope_(computer_science))です。 – CodeCaster

答えて

1

コードビハインドファイルで、タイマーを公開/保護されたメンバーまたはフィールドとして公開します。

private DispatcherTimer dt = null; 

public MainPage()  
{  
    InitializeComponent();  
    this.dt = new DispatcherTimer();  
    this.dt.Interval = new TimeSpan(0, 0, 0, 0, 1000); // 1 Second  
    this.dt.Tick += new EventHandler(dtTick);  
}  

private void startButton_Click(object sender, RoutedEventArgs e) 
{ 
    if (this.dt != null) 
       this.dt.Start(); 
} 
+0

ありがとうございます。 –

2

あなたはそれがこのように動作させることはできません - コンストラクタで宣言さdtはこれだけコンストラクタにスコープされてそこの外からアクセスすることができません。

public class MainPage 
{ 

    private DispatcherTimer _dt; 

    public MainPage() 
    { 
     _dt = new DispatcherTimer(); 
    } 

    private void startButton_Click(object sender, RoutedEventArgs e) 
    { 
     _dt.Start(); 
    } 
}