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

C# 使用委托从另一窗体获取数据更新本窗体时内容显示空白如何解决?

您好,这是我第一次编写C#代码,有个问题想请教。
我的需求是在窗体Load事件中将获取到的输入内容显示在标签中,目前编写的代码如下:

public DelegateText DelFirstName; 

public FrmConfirm()
{
    InitializeComponent();
    DelFirstName = new DelegateText(sic.GetFirstName);
}

private void FrmConfirm_Load(object sender, EventArgs e)
{
    lblFirstName.Text = DelFirstName(sic.FirstName);
}

程序运行后标签仅显示空白内容,没有语法报错,我不清楚问题出在哪里,希望得到解答。

排查步骤及解决方案

  • 先确认sic.FirstName的赋值时序
    窗体的Load事件是在窗体实例化完成后、显示前触发的,如果你是在创建FrmConfirm实例之后才给sic.FirstName赋值,那Load事件执行的时候这个属性还是空值,自然显示空白。你可以在给lblFirstName.Text赋值的行加断点,调试时查看sic.FirstName的实际值是否为空,即可定位这个问题。
  • 检查委托绑定的逻辑合理性
    你现在把委托绑定到了sic.GetFirstName方法,但调用时又传入了sic.FirstName作为参数。如果GetFirstName本身是无参、直接返回内部存储的姓名字段的方法,你传入参数反而可能触发预期外的逻辑,比如方法忽略传入的参数,直接返回还未赋值的内部变量。如果没有跨线程更新UI的需求,你完全没必要用委托,直接写lblFirstName.Text = sic.FirstName;或者lblFirstName.Text = sic.GetFirstName();即可。
  • 确认标签控件本身配置正常
    你可以在Load事件里加一行测试代码lblFirstName.Text = "测试文本";,如果运行后还是看不到内容,说明是标签本身的配置问题:比如Visible属性被设为false、字体颜色和窗体背景色相同、或者被其他控件遮挡,和赋值逻辑无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:48:01