我的C#应用程序中有很多控件值。我想知道是否有可能一次存储和读取整个可用的控制值,而不是下面的代码。
请注意,以下代码仅适用于1 groupBox
。我有8个,因此这会产生很多代码来实现它(下面代码的8倍)。
我使用序列化configData类来存储数据(工作)。
private void uiStateWriteToData()
{
configData.datSensor4mA1 = (int)uiSensor4mA1.Value;
configData.datSensor20mA1 = (int)uiSensor20mA1.Value;
configData.datSensorPidP1 = (int)uiSensorPidP1.Value;
configData.datSensorPidI1 = (int)uiSensorPidI1.Value;
configData.datSensorPidD1 = (int)uiSensorPidD1.Value;
configData.datSensorPidS1 = (int)uiSensorPidS1.Value;
configData.datSensor1InToOutput1 = uiSensor1Out1.Enabled;
configData.datSensor1InToOutput2 = uiSensor1Out2.Enabled;
configData.datSensor1InToOutput3 = uiSensor1Out3.Enabled;
}
private void uiStateUpdateFromData()
{
uiSensor4mA1.Value = configData.datSensor4mA1;
uiSensor20mA1.Value = configData.datSensor20mA1;
uiSensorPidP1.Value = configData.datSensorPidP1;
uiSensorPidI1.Value = configData.datSensorPidI1;
uiSensorPidD1.Value = configData.datSensorPidD1;
uiSensorPidS1.Value = configData.datSensorPidS1;
uiSensor1Out1.Enabled = configData.datSensor1InToOutput1;
uiSensor1Out2.Enabled = configData.datSensor1InToOutput2;
uiSensor1Out3.Enabled = configData.datSensor1InToOutput3;
}
答案 0 :(得分:0)
我不知道是否有任何框架可以做到这一点,但也许您可以提出自己的实用程序,根据控件层次结构,类型和名称将控制值写入xml文件。
以下是它的外观(而非伪代码):
private static void WriteControlValuesToXml(XmlDocument document, XmlNode parentNode, Control currentControl)
{
// if current control is container, writing its children values
if (currentControl.Controls.Count > 0)
{
var addedNode = AddNode(parentNode, currentControl.Name);
foreach (Control childControl in currentControl.Controls)
WriteControlValuesToXml(document, addedNode, childControl);
}
else
{
// if current control is not container, writing control values
if (currentControl is CheckBox)
{
var checkBox = (CheckBox)control;
AddNode(parentNode, currentControl.Name, "CheckBox", checkBox.Checked);
}
if (currentControl is TextBox)
{
var textBox = (TextBox)control;
AddNode(parentNode, currentControl.Name, "TextBox", textBox.Text);
}
// ... other known controls
}
}
遵循相同的逻辑,您可以实现从文件中读取相同的控制值。