【发布时间】:2013-10-04 17:29:24
【问题描述】:
在我的代码中,当我单击提交按钮时,我试图从选项窗口中的文本框中获取一个值。我知道我需要将字符串转换为我已经完成的双精度,但我的问题是 distanceOption 只是设置为 0.0 而不是用户放入文本框中的值。我认为我的问题可能与文本框的行数有关。我的 linecount 变量一直显示为 -1 并且不确定是否应该是这个值。
void Options_Clicked(object sender, RoutedEventArgs e)
{
OptionsWindow optionsWindow = new OptionsWindow();
optionsWindow.Show();
optionsWindow.DistanceButton.Click += new RoutedEventHandler(Distance_Clicked);
}
void Distance_Clicked(object sender, RoutedEventArgs e)
{
OptionsWindow optionsWindow = new OptionsWindow();
int lineCount = optionsWindow.DistanceBox.LineCount;
this.distanceOption = Convert.ToDouble(optionsWindow.DistanceBox.GetLineText(lineCount));
}
如果有更好的方法从文本框中获取值,我也会对此持开放态度。谢谢!
【问题讨论】:
-
如果您在 Distance_Clicked 中创建一个新的 OptionsWindow,我猜 DistanceBox.LineCount 将是默认值。您需要单击 DistanceButton 的原始 OptionsWindow。
-
@LPL 好的,我明白你在说什么。您如何建议我从 Distance_clicked 函数中的 Options_Clicked 函数中获取 optionsWindow?
-
使用 MVVM 会很容易。因此,在我看来,所有选项都像是 hack。但是您可以将
OptionsWindow optionsWindow = new OptionsWindow();移出 Options_Clicked 处理程序,以便您也可以在 Distance_Clicked 处理程序中引用它。但是您应该在 Options_Clicked 中注册 optionsWindow.DistanceButton.Click 或在关闭OptionsWindow后将其删除,否则每个 Options_Click 都会获得一个处理程序i>. -
@LPL 感谢有用的 cmets。你的 cmets 结合艾伦的回答解决了我的问题。感谢您的快速回复。
标签: c# wpf textbox event-handling line-count