2017-07-01 13 views
2

私は実に感謝しています。テキストボックスから値を変数に代入しようとした際にnull例外が発生しました

XAML.CS

Double D; 
D = Convert.ToInt32(Diameter.Text); 
D = int.Parse(Diameter.Text); 

Double R; 
R = (D/2); 

Double A; 
A = (R * R * (Math.PI)); 

Double M; 
M = Convert.ToInt32(Mass.Text); 
M = int.Parse(Mass.Text); 

float g; 
g = 9.81f; 

float P; 
P = Convert.ToInt32(Pressure.Text); 
P = int.Parse(Pressure.Text); 

float Ol1; 
Ol1 = Convert.ToInt32(OilLevel.Text); 
Ol1 = int.Parse(OilLevel.Text); 

Double V1; 
V1 = ((Math.PI) * R * R * Ol1); 

float K1; 
K1 = Convert.ToInt32(SpringRate.Text); 
K1 = int.Parse(SpringRate.Text); 

Double Pr1; 
Pr1 = Convert.ToInt32(InitialPreload.Text); 
Pr1 = Convert.ToInt32(Preload.Text); 
Pr1 = (Convert.ToInt32(InitialPreload.Text) + Convert.ToInt32(Preload.Text)); 

InitializeComponent(); 

ライン2(D = Convert.ToInt32(Diameter.Text))エラーをスロー。以下は

私は訓練された目には、基本的ではなく、明らかに何かが欠けする必要があります知っているテキストボックスの

XAML

<StackPanel> 
    <TextBlock Margin = "10 10" Text="Spring Force Calculator" HorizontalAlignment="Center" FontWeight="Bold" FontSize="22"/> 
    <TextBlock Margin = "10 10" Text="Mass - Kg" FontSize="18"/> 

    <TextBox x:Name="Mass" Margin="10 10" Text="165"/> 
    <TextBlock Margin = "10 10" Text="Initial Pressure - Bar" FontSize="18"/> 

    <TextBox x:Name="Pressure" Margin="10 10" Text="1"/> 
    <TextBlock Margin = "10 10" Text="Internal Fork Diameter - mm" FontSize="18"/> 

    <TextBox x:Name="Diameter" Margin="10 10" Text="46"/> 
    <TextBlock Margin = "10 10" Text="Internal Fork Area - mm²" FontSize="18"/> 

    <TextBox x:Name="Area" Margin="10 10"/> 
    <TextBlock Margin = "10 10" Text="Spring Rate - N/m" FontSize="18"/> 

    <TextBox x:Name="SpringRate" Margin="10 10" Text="9"/> 
    <TextBlock Margin = "10 10" Text="Installed Preload - mm" FontSize="18"/> 

    <TextBox x:Name="InitialPreload" Margin="10 10" Text="10"/> 
    <TextBlock Margin = "10 10" Text="Preload - mm" FontSize="18"/> 

    <TextBox x:Name="Preload" Margin="10 10" Text="6"/> 
    <TextBlock Margin = "10 10" Text="Oil Level - mm" FontSize="18"/> 

    <TextBox x:Name="OilLevel" Margin="10 10" Text=".133"/> 
    <TextBlock Margin = "10 10" Text="Maximum Allowable Travel - mm" FontSize="18"/> 

    <TextBox x:Name="MaxATravel" Margin="10 10" Text="115"/> 
    <TextBlock Margin = "10 10" Text="Maximum Calculated Travel - mm" FontSize="18"/> 

    <TextBox x:Name="MaxCTravel" Margin="10 10"/> 
</StackPanel> 

を保持しているXAMLコードです。私はこれがプログラミングで、私が構築したときに学ぶことを試みることに対する私の最初の試みであることに気づくべきである(おそらく最良のアイデアではない)。

もう一度申し訳ありませんが、初心者向けの質問は、助けてください!

おかげ Jord

+1

ようこそ。どの行がnull参照例外をスローしますか?さらに、いくつかの情報をご提供ください。このテキストボックスは何ですか?これは、Windowsフォームアプリケーション、WPF、ASP.NET Webフォームのテキストボックスですか?このコードが正確に実行されるところでは、このコードが残すメソッドの完全なコードを表示します。どうして 'Convert.ToInt32'と' int.Parse'の両方を使用するのですか?ありがとう – Christos

+0

申し訳ありませんが、2行目で例外がスローされます。テキストボックスはWPFにあります。私のコードへのペーストビンのリンクがあります(それを呼び出すことができれば!)https://pastebin.com/Aj5wUv5X - 特定のエラーは次のようになります:System.NullReferenceException: 'オブジェクト参照がオブジェクトのインスタンスに設定されていません。' –

+0

全く問題ありません!あなたのポストにあなたのコードを含めて、あなたのポストの読者が見ることができるように、リンクを通して提供してはいけません。それは、誰かがコメントを実行し、それらを読んで、リンクをクリックする必要があります... – Christos

答えて

1

問題は、あなたのコンポーネントが初期化されていないことですし、それが初期化だ前に、このコンポーネントに存在コントロールにアクセスします。 MainWindow方法の最初の行として

InitializeComponent(); 

:ソリューションは、このラインをもたらすことです。副次的なことは、既に行っているように、Convert.ToInt32Int.Parseの両方を使用する理由は何もありません。解析は一度だけ行う必要があります。さらに、私はint.TryParseメソッドを探すことをお勧めします。この方法では、解析中に例外を避けることができます。 hereから始めることができます。

+0

Christosに感謝します。予想どおり、私のエラーは基本的には基本的なものです。助けてくれてありがとう、私はあなたが提供したリンクを読むでしょう。 –

+0

@Jordあなたは大歓迎です! – Christos

関連する問題