簡體   English   中英

如何在WPF C#中傳遞參數

[英]How to pass a parameter in wpf C#

我在WindowAfterLogin.xaml有一個代碼:

<TextBlock x:Name="In_Time" Foreground="#FF55534F" 
           FontSize="71.312" FontFamily="HelveticaNeueCyr" 
           Height="79.45" LineStackingStrategy="BlockLineHeight" 
           Canvas.Left="2.724" LineHeight="71.312" 
           TextAlignment="Center" TextWrapping="Wrap" 
           Canvas.Top="69.985" Width="231.581" Text="09:00" />

然后我想在WindowAfterLogin.xaml.cs更改該TextBlock的值,所以我做到了:

MainWindow objMainWindow = new MainWindow();
WindowAfterLogin objAfterLogin = new WindowAfterLogin();                
objMainWindow.Show();
objAfterLogin.In_Time.Text = DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString();
this.Close();

但是,當我按F5按鈕(編譯)時,它沒有改變。 問題出在哪里?

您是否要創建WindowAfterLogin的單獨實例? 如果要這樣做,則必須Show()新實例。 嘗試這個:

    WindowAfterLogin objAfterLogin = new WindowAfterLogin();                
    objAfterLoginShow();
    objAfterLogin.In_Time.Text = DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString();
    //Close(); //Close any other window that needs to be closed..

如果要更改當前實例的In_Time.Text (假定已顯示或當前可見),則可以在構造函數或初始化WindowAfterLogin方法中嘗試進行此WindowAfterLogin

In_Time.Text = DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString();

作為簡化到位的答案,嘗試寫這樣的事情,而不是你的代碼

MainWindow objMainWindow = new MainWindow();
objMainWindow.Show();
In_Time.Text = DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString();
this.Close(); //Not sure if You need it. Try to comment this line to be able to notice textblock text changes

我也認為你需要

DateTime.Now.ToString("hh:mm") 

代替

DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString()

暫無
暫無

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

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