首页 > 解决方案 > if else 语句显示文本而不是双精度

问题描述

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

我有一种产生随机电压的方法。此方法作为参数传递以进一步计算压力。我正在尝试编写代码,因此如果(随机)电压 <= 2 或 >= 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();
            }
        }
    }

型号/仪表.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))
        {
               ???
        }

    }

视图/MainViewModel.cs

        Monitor.Gas.Pressure = sys.VacuumSystem.Gas.AveragePressure.ToString("0.0E-0");
        Monitor.Gas.Voltage = sys.VacuumSystem.Gas.Voltage.ToString("0.00");

标签: c#winforms

解决方案


您需要格式化绑定中的数据。
control.DataBindings.Add(propertyName, dataSource, dataMember, true, DataSourceUpdateMode.OnPropertyChanged);应该变成这个

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);

推荐阅读