Easy VSExpress Вопрос (IsPressed vs _Click) Преобразование единиц - PullRequest
1 голос
/ 12 мая 2011

У меня есть это, и оно работает, но я получаю ту же формулу (_Click), как она выглядит в начале. Я хочу, чтобы он каждый раз использовал одни и те же поля и кнопки, но с разными формулами для каждой кнопки-переключателя. Заранее благодарю за любую помощь. V / R

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

namespace UnitConverterFinal
{
public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        if (boxa.Text == "")
            boxa.Text = Convert.ToString((Convert.ToDouble(boxb.Text) * 9 / 5) + 32);
        else
            boxb.Text = Convert.ToString((Convert.ToDouble(boxa.Text) - 32)  *  5/9);
    }

    private void radioButton1_Checked(object sender, RoutedEventArgs e)
    {
        textBlock1.Text = "Farenheight to Celsius";
        boxb.Text = "";
        boxa.Text = "";

        if(button1.IsPressed)
        {
            if (boxa.Text == "")
                boxa.Text = Convert.ToString((Convert.ToDouble(boxb.Text) * 9 / 5) + 32);
            else
                boxb.Text = Convert.ToString((Convert.ToDouble(boxa.Text) - 32) * 5 / 9);
        }

    }

    private void radioButton2_Checked(object sender, RoutedEventArgs e)
    {
        textBlock1.Text = "Centimeters to Inches";
        boxa.Text = "";
        boxb.Text = "";

        if (button1.IsPressed)
        {
            if (boxa.Text == "")
                boxa.Text = Convert.ToString(Convert.ToDouble(boxb.Text) * 2.54);
            else
                boxb.Text = Convert.ToString(Convert.ToDouble(boxa.Text)  * 0.3937008);
        }

    }
 }
}

Спасибо :) теперь работает

с использованием системы; using System.Collections.Generic; использование System.Linq; используя System.Net; используя System.Windows; использование System.Windows.Controls; использование System.Windows.Documents; использование System.Windows.Input; используя System.Windows.Media; using System.Windows.Media.Animation; использование System.Windows.Shapes; используя Microsoft.Phone.Controls;

namespace UnitConverterFinal { открытый частичный класс MainPage: PhoneApplicationPage { // Конструктор public MainPage () { InitializeComponent (); }

    private void button1_Click(object sender, RoutedEventArgs e)
    {

      if (radioButton1.IsChecked == true) { CalcDegrees(); }
      if (radioButton2.IsChecked == true) { CalcDistance(); }

    }


    private void radioDegrees_checked(object sender, RoutedEventArgs e)
    {
    CalcDegrees();
    }

    private void radioDistance_checked(object sender, RoutedEventArgs e)
    {
    CalcDistance();
    }

    private void CalcDegrees()
    {
     //Move your calc code here
        if (!string.IsNullOrEmpty(tbA.Text)) { FtoC(); return; }
        if (!string.IsNullOrEmpty(tbB.Text)) { CtoF(); return; }
    }

    private void CalcDistance()
    {
    //Move your calc code here
        if (!string.IsNullOrEmpty(tbA.Text)) { InchToCent(); return; }
        if (!string.IsNullOrEmpty(tbB.Text)) { CentToInch(); return; }

    }

    private void FtoC()
    {
         tbB.Text = Convert.ToString((Convert.ToDouble(tbA.Text) * 9 / 5) + 32); 
    }

    private void CtoF()
    {
        tbA.Text = Convert.ToString((Convert.ToDouble(tbB.Text) - 32) * 5 / 9); 
    }

    private void InchToCent()
    {
        tbB.Text = Convert.ToString(Convert.ToDouble(tbA.Text) * 2.54);             
    }

    private void CentToInch()
    {
        tbA.Text = Convert.ToString(Convert.ToDouble(tbB.Text) * 0.3937008); 
    }
 }

}

1 Ответ

0 голосов
/ 13 мая 2011

то, что вам нужно, больше похоже на это (кстати, psuedo code).Это основано на том, что я думаю, что ваша логика пользовательского интерфейса

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (radioDegrees.Checked) { CalcDegrees(); }
            if (radioDistance.Checked) { CalcDistance(); }
        }

        private void radioDegrees_CheckedChanged(object sender, EventArgs e)
        {
            CalcDegrees();
        }

        private void radioDistance_CheckedChanged(object sender, EventArgs e)
        {
            CalcDistance();
        }

        private void CalcDegrees()
        {
            if (!string.IsNullOrEmpty(tbA.Text)) { FtoC(); return; }
            if (!string.IsNullOrEmpty(tbB.Text)) { CtoF(); return; }
        }

        private void CalcDistance()
        {
            if (!string.IsNullOrEmpty(tbA.Text)) { InchToCent(); return; }
            if (!string.IsNullOrEmpty(tbB.Text)) { CentToInch(); return; }
        }

        private void FtoC()
        {
             tbB.Text = Convert.ToString((Convert.ToDouble(tbA.Text) * 9 / 5) + 32); 
        }

        private void CtoF()
        {
            tbA.Text = Convert.ToString((Convert.ToDouble(tbB.Text) - 32) * 5 / 9); 
        }

        private void InchToCent()
        {
            tbB.Text = Convert.ToString(Convert.ToDouble(tbA.Text) * 2.54);             

        }

        private void CentToInch()
        {
            tbA.Text = Convert.ToString(Convert.ToDouble(tbB.Text) * 0.3937008); 
        }
    }

Обновлен код.Я работал над этим в проекте WinForms, и он работает.Попробуйте это так.

...