You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何跨窗体将登录用户名传入主窗体TextBlock控件

实现登录成功后将用户名显示到主窗体TextBlock

步骤1:为主窗体的TextBlock设置可访问名称

首先修改主窗体的XAML代码,给TextBlock添加x:Name属性,让后台代码能引用并修改它的内容:

<TextBlock x:Name="tbUsername" 
           FontSize="12" 
           FontWeight="Bold" 
           Margin="0 15 0 7" 
           TextAlignment="Center" 
           HorizontalAlignment="Center" 
           Foreground="Black">
</TextBlock>

步骤2:修改主窗体构造函数以接收用户名参数

假设主窗体类是SplashScreen,在其后台代码(SplashScreen.xaml.cs)中添加带参数的构造函数,用于接收并显示用户名:

public SplashScreen(string username)
{
    InitializeComponent();
    // 直接赋值用户名,也可以添加欢迎文本,按需调整
    tbUsername.Text = username;
}

// 若需保留无参构造函数(满足设计器需求),可重载实现:
public SplashScreen()
{
    InitializeComponent();
}

步骤3:在登录逻辑中传递用户名到主窗体

修改登录窗体的登录成功分支代码,创建主窗体实例时传入登录的用户名:

if (dr.Read() == true)
{
    string loggedInUsername = ltxtusername.Text;
    // 传入用户名创建主窗体并显示
    new SplashScreen(loggedInUsername).Show();
    this.Hide();
}

重要提示:修复SQL注入漏洞

你的原登录代码直接拼接SQL字符串,存在严重的SQL注入风险,建议立即改为参数化查询:

con.Open();
// 使用参数化查询避免SQL注入
string loginQuery = "SELECT * FROM tbl_user WHERE username = ? AND password = ?";
cmd = new OleDbCommand(loginQuery, con);
// OleDb参数顺序需与SQL占位符顺序一致
cmd.Parameters.AddWithValue("@username", ltxtusername.Text);
cmd.Parameters.AddWithValue("@password", ltxtpassword.Password);
OleDbDataReader dr = cmd.ExecuteReader();

内容的提问来源于stack exchange,提问作者Hamid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:52:35