2013-10-04 23 views
0

在我的代碼中,當我點擊提交按鈕時,我試圖從我的選項窗口中的文本框中獲取值。我知道我需要將字符串轉換爲我已經完成的double,但是我的問題是distanceOption只是將set設置爲0.0而不是用戶放入文本框的值。我認爲我的麻煩可能與文本框的行數有關。我的linecount變量保持顯示爲-1,並不確定這是否應該是該值。wpf文本塊中的文本和行數問題

 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)); 

    } 

如果有更好的方法來獲取文本框中的值,我會持開放的態度爲好。謝謝!

+0

如果您創建一個新的選項窗口在Distance_Clicked我猜DistanceBox.LineCount將是默認值。您需要單擊DistanceButton的原始OptionsWindow。 – LPL

+0

@LPL好吧,我明白你的意思了。你如何建議我從Distance_clicked函數的Options_Clicked函數中獲取optionsWindow? – AveragePainter

+0

MVVM很容易。所以所有的選擇在我看來都像是黑客。但是您可以將OptionsWindow optionsWindow = new OptionsWindow();移出* Options_Clicked *處理程序,以便您可以在Distance_Clicked *處理程序中引用它。但是,你應該註冊* optionsWindow.DistanceButton.Click *不在* Options_Clicked *中,或者在關閉OptionsWindow後刪除它,否則你將會在每個* Options_Click *中得到一個更多的處理程序。 – LPL

回答

0

下面是一個例子

public partial class MainWindow : Window 
{ 
    NewWindow optionsWindow = new NewWindow(); 

    public MainWindow() 
    { 
     InitializeComponent(); 

     optionsWindow.button1.Click += new RoutedEventHandler(button1_Click); 
     optionsWindow.Show(); 

    } 

    void button1_Click(object sender, RoutedEventArgs e) 
    { 
     double d = Convert.ToDouble(optionsWindow.textBox1.GetLineText(0)); 
    } 


} 
+0

感謝這很容易格式化和解決我的問題就像一個魅力。 – AveragePainter

0

創建相應的視圖模型,並使用數據綁定:

XAML:

<TextBox Text="{Binding MyDouble}"/> 

視圖模型:

public double MyDouble {get;set;} //Probably NotifyPropertyChanged 
+0

所以我應該在我的程序中使用MyDouble來替換存儲雙精度的distanceOption? – AveragePainter

+0

@averagepainter不,我說的是需要使用數據綁定而不是程序方法。 –