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