C# If-else语句以显示文本而不是双精度

C# If-else语句以显示文本而不是双精度,c#,winforms,C#,Winforms,我需要呈现一个字符串,而不是一个双精度值 我有一种产生随机电压的方法。此方法作为参数传递,以进一步计算压力。我正在尝试编写代码,因此如果随机电压为=10,则相关文本框应被读取。文本框现在使用方法AveragePressure读取压力值。请找到带问题的代码。先谢谢你 视图/DiagnosticsView.cs: private void PresBindings() { private void PresBindings(Control c, string proper

我需要呈现一个字符串,而不是一个双精度值

我有一种产生随机电压的方法。此方法作为参数传递,以进一步计算压力。我正在尝试编写代码,因此如果随机电压为=10,则相关文本框应被读取。文本框现在使用方法AveragePressure读取压力值。请找到带问题的代码。先谢谢你

视图/DiagnosticsView.cs:

    private void PresBindings()
    {


    private void PresBindings(Control c, string propertyName, object dataSource, string dataMember)
    {
        c.DataBindings.Add(propertyName, dataSource, dataMember, true, DataSourceUpdateMode.PropertyChanged);
    }

        Binding(textBoxVoltage, "Text", viewModel.Gas, nameof(PressureViewModel.Voltage)); //Voltage method in SystemMonitorViewModel.cs
型号/固件.cs:

    public double GetVoltage()
    {
        double randVoltage;
        lock (lockObject)
        {
            Random r = new Random();
            randVoltage = r.NextDouble()*8.0;
            return randVoltage;

        }
    }
Monitor.cs 字符串p=-

   public string Pressure
    {
        get
        {
            return p;
        }
        set
        {
            if (!string.Equals(value, p))
            {
                p = value;
                Property();
            }
        }
    }
型号/Gauge.cs:

    protected Average averagePressure;
    public double AveragePressure
    {
        get
        {
            GetAverage();
        }
    }

    public override void Read(double voltage, bool trip)
    {
        double P;
        Voltage = voltage;
        this.trip= trip;

        if ((voltage <= 2 || voltage >= 10))
        {
               ???
        }

    }

您需要格式化绑定中的数据。 此control.DataBindings.AddpropertyName、dataSource、dataMember、true、DataSourceUpdateMode.OnPropertyChanged;应该是这样


它通过编写布尔getter和setter方法工作:

    public bool On
    {
        get; set;
    } = false;

    public override void Read(double voltage, bool trip)
    {
        double P;
        Voltage = voltage;
        this.trip= trip;

        if ((voltage <= 2 || voltage >= 10))
        {
               On = false;
        }
        else 
        {
               On = true;
        }....

   public string getText()
    {
        if (On)
            return AveragePressure.ToString("0.0E-0");
        else
            return "Off";
    }

谢谢你们的帮助

我不确定textbox指的是什么,并且您的代码示例中没有呈现任何内容的代码。您包含的唯一cshtml仅调用返回void的方法。你能澄清一下你想改变什么吗?首先,Random r=new Random;在GetVoltage之外声明它,在类中创建一次,以便可以重用它。第二,这个文本框在哪里,你也在做任何绑定吗?嗨,谢谢你的及时回复。我已经用顶部的绑定代码更新了这个问题。您可以使用,与绑定对象一起使用。然后使用Binding.Format和Binding.Parse事件将其进行双向转换。看,前几天发的,对。非常感谢。我现在要通读一遍。嗨,格罗格,谢谢你回到我身边。如果我现在的电压低于/等于2或大于/等于10,则压力值仍会呈现,并且不会在textBoxGasGunVoltage中打印出来。有什么我遗漏的吗。
Binding binding = new Binding(propertyName, dataSource, dataMember, true, DataSourceUpdateMode.OnPropertyChanged);
binding.Format+= (sender, e) => 
{
    if(double.Parse(e.Value.ToString()) <= 2 || double.Parse(e.Value.ToString()) >= 10)
        e.Value = "Off";
};
control.DataBindings.Add(binding);
    public bool On
    {
        get; set;
    } = false;

    public override void Read(double voltage, bool trip)
    {
        double P;
        Voltage = voltage;
        this.trip= trip;

        if ((voltage <= 2 || voltage >= 10))
        {
               On = false;
        }
        else 
        {
               On = true;
        }....

   public string getText()
    {
        if (On)
            return AveragePressure.ToString("0.0E-0");
        else
            return "Off";
    }
    ViewModelLocator.Monitor.Gas.Pressure = VacuumSystem.Gas.getText();