0

私は単位変換アプリを作成しています。たとえば、インチのテキストボックスに値を入力すると、他のテキストボックスが変更されます(マイル、フィートなど、各単位は異なるテキストボックスです)。テキストボックスごとにテキスト変更イベントを使用しています。たとえばMILESに値を入力すると問題が発生し、MILESのテキスト変更イベントが機能し始めますが、他のテキスト変更イベントも機能し始めます...そして、値と値と値を計算し続けますそしてそれは決して止まりません。たとえば、フォーカスを確認したい。

if (INCHES got focus)
THEN
   //do the conversions and display it in the other textboxes 
   convert inches to miles,feet,etc... 
  // display it in the other textboxes 
   milestxtbox=the conversion from inches to miles.....

私が言ったように、フォーカスをチェックしないと(それがWindowsストアのC#アプリ開発でそれを行う方法がわからない問題です)、全員のテキストボックスが値の変更を開始し、停止しません... :/。この説明で十分に明確だったと思いますが、私はいつも説明が下手です。したがって、テキストボックスに書き込むと、他のテキストボックスは変換された値に変更されますが、textchanged イベントのためにテキストボックスが変更される無限ループにはなりません。ありがとう!!!

4

1 に答える 1

0

検証をボタンクリックに移動してみることができます.2つのテキストボックスは値用で、もう1つは測定単位用です。たとえば、このような出力用のリストボックスです...

private void Button1_Click(object sender, EventArgs e)
{
     lstOutput.Items.Clear();//lstOutput is the listbox
     int inches = Convert.ToInt32(txtInches.Text);
     string UnitOfMeasure = txtUnitOfMeasure.Text.ToUpper();
     ConvertToYardsOrFeet(inches, UnitOfMeasure);
}

private void ConvertToYardsOrFeet(int inches, string UnitOfMeasure)
    {
        int Yard = 0;
        int Feet = 0;
        int Inches = 0;

        if (UnitOfMeasure == "Y")
        {
             Yard = inches / 36;
             Feet = inches % 36 / 12;
             Inches = inches % 12;

             lstOutput.Items.Add(Yard + " Yards" + Feet + " Feet" + Inches + " Inches.");

        }

        if (UnitOfMeasure == "F")
        {
            Feet = inches / 12;
            Inches = inches % 12;

            lstOutput.Items.Add(Feet + " Feet" + Inches + " Inches.");
        }
    }

もちろん、これは単なる例であり、他のユニットを追加することができます

于 2013-06-10T01:43:03.913 に答える