0

我正在制作一个单位转换器应用程序,我希望如果您在 INCHES 文本框中输入一个值,那么其他文本框会发生变化(英里、英尺等,每个单位都是不同的文本框)。我正在为每个文本框使用文本更改事件。当你在让我们说 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个文本框一个用于值,另一个用于测量单位,例如一个用于输出的列表框......

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 回答