【问题标题】:Passing value into textbox将值传递到文本框
【发布时间】:2012-05-04 09:34:42
【问题描述】:

我正在使用 Silverlight,并将值传递到子窗口中的文本框中,

textBox1_TextChanged 事件应该触发一个 web 服务调用,该调用应该在子窗口上填充一个列表框,但是由于某种原因,当子窗口加载时,文本框会根据需要将值传递给它,但由于某种原因,@ 987654322@ 事件未触发?

这有什么具体原因吗?

这里是更改事件 -

private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
    {
        WebService.Service1SoapClient client = new WebService.Service1SoapClient();
        client.PRSHListCompleted += new EventHandler<PRSHListCompletedEventArgs>(client_PRSHListCompleted);
        client.PRSHListAsync(System.Convert.ToInt16(textBox1.Text));

        textBox2.Text = "OK"; //I did this to test if I was getting to the event and it failed.
    }

我在这里从父窗口传入textBox1.Text-

Settings set = new Settings();
set.textBox1.Text = System.Convert.ToString(PRSID);

set.Show();

set 是子窗口。

这是文本框的 XAML -

<TextBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="12,13,0,0" Name="textBox1" VerticalAlignment="Top" Width="28" TextChanged="textBox1_TextChanged" />

【问题讨论】:

  • 您能给我们提供您订阅活动的代码吗?
  • 你能粘贴一些代码吗,主要是如何连接事件以及如何将值传递到文本框。
  • 好的,很好,现在我们可以看到事件处理程序和文本更改代码,但是您在其中进行事件订阅的代码呢?
  • 您能解释一下活动订阅吗?
  • set.textBox1 += textBox1_TextChanged; (在 C# 代码中)或 (在 XAML 中)

标签: c# silverlight textbox childwindow


【解决方案1】:

您可以在触发Settings.Loaded 事件并进行所有 XAML 事件订阅后立即设置textBox1.Text

所以试试这个:

Settings set = new Settings();
set.Loaded += (o, args) =>
{
    //set.Dispatcher.BeginInvoke(() =>
    //{
    set.textBox1.Text = System.Convert.ToString(PRSID);
    //});
};

set.Show();

【讨论】:

  • 奇怪,这一次成功了,但再次尝试它失败了?如果我手动删除然后在表单加载后输入 PRSID,这会触发 textBox-Changed 事件并且值会更新 lstbox。还有其他建议吗?
  • 我已经更新了我的代码。如果您取消注释新代码,一切都应该没问题,但是我仍然不确定为什么没有新代码它会不稳定。我会试着找出问题所在,如果我发现了什么,我会告诉你
  • 你明白了!如果我可以要求解释为什么这种方法有效吗?我认为是强制清除表格然后更新?真的很感激。
  • 我没有尝试在设置子窗口的初始化组件部分中使用 textBox 中的值,但是它说它们为空?我该如何解决这个问题?
  • 对不起,我不明白。你能给我一段代码吗?
最近更新 更多