2014-10-10 2 views
0

У меня есть вход в систему как первый экран при открытии приложений. После того, как вы вошли в систему, у меня осталось еще 10 страниц. Все, что я хочу, это имя того человека, который вошел в систему на всех страницах, например, (Welcome, User!). Я не имею ни малейшего представления о том, как это сделатьКак показать имя пользователя на следующей странице

Вот мой код:

private void btnLogin_Click(object sender, RoutedEventArgs e) 
{ 
    txtUsername.IsEnabled = true; 
    txtPassword.IsEnabled = true; 
    txtMessage.Text = ""; 
    txtMessage.IsEnabled = false; 

    try 
    { 
     SqlConnection oConnection = new SqlConnection(_ConnectionString); 
     SqlCommand oCommand = new SqlCommand("Select * from register where Username = '" + txtUsername.Text + "' AND Password = '" + txtPassword.Password + "'", oConnection); 

     if (oConnection.State == ConnectionState.Closed) 
      oConnection.Open(); 

     SqlDataAdapter adapter = new SqlDataAdapter(); 
     SqlDataReader reader = oCommand.ExecuteReader(); 
     string Username = null; 

     if (reader.HasRows) 
     { 
      username = txtUsername.Text; 
      oConnection.Close(); 

      NavigationService _Nav = NavigationService.GetNavigationService(this); 
      _Nav.Navigate(new Uri("Menuxaml.xaml", UriKind.RelativeOrAbsolute)); 
     } 
     else if (txtUsername.Text.Trim().Length == 0) 
      Errormessage.Text = "Please enter your Username"; 
     else if (txtPassword.Password.Trim().Length == 0) 
      Errormessage.Text = "Please enter your Password"; 
     else 
     { 
      Errormessage.Text = "Invalid Username or Password!"; 
      txtPassword.Password = ""; 
      txtUsername.Text = ""; 
     } 

     oConnection.Close(); 
    } 
} 
+0

Вы работаете в WPF? – vallabha

+0

Да, я развиваюсь в WPF –

+0

У вашего проекта есть структура главной страницы? – vallabha

ответ

2

Если вам нужно имя пользователя во всех 10 страниц, я хотел бы предложить вам добавить это в Заявке ресурсов и доступа к нему со всей программы.

Позвольте мне показать вам, как это сделать.

Application.Current.Resources.Add("UserName",txtUsername.Text); 

, а затем на вашей второй странице воспользуйтесь этим ресурсом, чтобы установить свою метку.

lbl.Content = Application.Current.Resources["UserName"]; 
+0

Спасибо .... это работает без чрезмерного кодирования –

+0

Если это сработало, отметьте это как ответ – jadavparesh06

+0

как я могу отметить. я немного новичок в этом .. –

0

Вы можете передать значение на вторую страницу либо с помощью конструкторы или общедоступного метода, выставленного на второй странице.

Вот деталь:

Page1:

public partial class Page1 : Page 
{ 
    public Page1() 
    { 
     InitializeComponent(); 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     Page2 p = new Page2(2); 
     this.NavigationService.Navigate(p); 
    } 
} 

Page2:

public partial class Page2 : Page 
{ 
    int valueFromPage1; 
    public Page2() 
    { 
     InitializeComponent(); 
    } 
    public Page2(int val):this() 
    { 
     valueFromPage1 = val; 
     this.Loaded += new RoutedEventHandler(Page2_Loaded); 

    } 
    void Page2_Loaded(object sender, RoutedEventArgs e) 
    { 
     lbl.Content = "Value passed from page1 is: " + valueFromPage1; 
    } 
} 

Позвольте мне знать, если у вас есть какие-либо дальнейшие проблемы.

Если вы хотите использовать ту же структуру, а затем

page.NavigationService.Navigate(new Uri("/Views/Page.xaml?parameter=test", UriKind.Relative)); 

Целевая страница:

string parameter = string.Empty; 
    if (NavigationContext.QueryString.TryGetValue("parameter", out parameter)) 
{ 
     this.label.Text = parameter; 
    } 
+0

Должен ли я изменить способ перехода на другую страницу? посмотрите на мой код –

+0

Я не получил его работу. Спасибо за вашу помощь. Я использовал пример из jadavparesh06 и отлично работает. –

Смежные вопросы