【问题标题】:How to pass value from Main WIndow textbox to other User Control?如何将值从主窗口文本框传递到其他用户控件?
【发布时间】:2020-05-05 14:57:29
【问题描述】:

目标:

我的目标是将值从主窗口(即登录屏幕)传递到其他用户控制表单。

这是 MainWindow.Xaml.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void CloseButton_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }


    private void btnLogin_Click(object sender, RoutedEventArgs e)
    {

        string connString = ConfigurationManager.ConnectionStrings["Technical_Application.Properties.Settings.ConnectionString"].ConnectionString;
        string query = "SELECT count(*) from users where username = '" + txtUsername.Text + "' and password = MD5('" + txtPassword.Password + "')";

        using (var conn = new MySqlConnection(connString))
        {
            conn.Open();
            using (var cmd = new MySqlCommand(query, conn))
            {
                int count = Convert.ToInt32(cmd.ExecuteScalar());
                if(count == 1)
                {
                    Dashboard dashboard = new Dashboard();
                    dashboard.Show();
                    this.Close();
                }
                else
                {
                    MessageBox.Show("Username or Password unvalid", "Login Error", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }
            conn.Close();
        }
    }
}

它会打开仪表板。我现在有一个 ListViewMenu 指向特定的 User Control 表单,并在仪表板上打开。

打开不同用户控件的代码

   private void ListViewMenu_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        int index = ListViewMenu.SelectedIndex;
        MoveCursorMenu(index);

        switch (index)
        {
            case 0:
                GridPrincipal.Children.Clear();
                GridPrincipal.Children.Add(new UserControlMain());

                break;
            case 1:
                GridPrincipal.Children.Clear();
                GridPrincipal.Children.Add(new UserControl1());
                break;
            default:
                break;
        }

    }

问题:

MainWindow 名称为txtUsername 的文本框如何将文本值传输到其他UserControl 窗口?

【问题讨论】:

  • 您要传输TextBox 控件或其文本值吗?视图后面是否有一个模型来保存用户名?
  • @Ackdari 文本值 - 一秒钟我也注意到了我的问题中的错误。
  • @Ackdari 不,我没有。在我发现 WPF 之前一直专注于 Windows 窗体——这对我来说似乎很困惑如何将数据传输到其他窗体。而 Win 表格要简单得多。
  • 在谷歌上搜索 MVVM

标签: c# wpf


【解决方案1】:

在 Dashboard 类中添加字符串属性并将其传递给该类是否容易 - 比如:

Dashboard dashboard = new Dashboard();
dashboard.UserName = txtUsername.Text;

然后您可以将相同的字符串值传递给其他控件。当然,理想情况下,您应该实现 MVVM 模式并使用绑定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    相关资源
    最近更新 更多