場景 DevExpress的RadioGroup的items選項如果是不確定的話,需要其從配置文件中載入。 實現 在項目目錄下新建Config文件夾,文件夾下新建xml配置文件。 並且設置在其較新時複製到輸出目錄: 然後在顯示RadioGroup的窗體的載入事件中。 讀取配置文件中的item選項。 ...
場景
DevExpress的RadioGroup的items選項如果是不確定的話,需要其從配置文件中載入。
實現
在項目目錄下新建Config文件夾,文件夾下新建xml配置文件。
<?xml version="1.0" encoding="utf-8" ?> <!--圖形選項功能Dialog中的RadioGroup中的X軸Items選項配置--> <items> <item>電流</item> <item>電壓</item> <item>溫度</item> <item>比容量</item> <item>能量</item> <item>比能量</item> <item>交流內阻</item> <item>功率</item> <item>dQ/dV</item> <item>dQm/dV</item> </items>
並且設置在其較新時複製到輸出目錄:
然後在顯示RadioGroup的窗體的載入事件中。
List<string> XradioGrupItems = initRadioGroupItem(Global.RADIO_GROUP_ITEM_FILEPATH_X);c
讀取配置文件中的item選項。
public List<string> initRadioGroupItem(string xmlFilePath) { List<string> radioGrupItems = ChartOptionHelper.getRadioGroupItems(xmlFilePath); return radioGrupItems; }
這裡調用了工具類去訪問配置文件的item並存到一個list中。
public static List<string> getRadioGroupItems(string xmlFilePath) { List<string> radioGroupItems = new List<string>(); XmlDocument xml = ReadXMLConfigHelper.readXml(xmlFilePath); XmlNodeList nodeList = ReadXMLConfigHelper.getNodeListByXpath(xml, Global.RADIO_GROUP_ITEM_XPATH); foreach(XmlNode xmlNode in nodeList) { radioGroupItems.Add(xmlNode.InnerText); } return radioGroupItems; }
其中業務工具類又調用了公共的讀取配置文件的工具類。
工具類方法參照:
C#中讀寫Xml配置文件常用方法工具類:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100879220
上面全局變數的Xpath的表達式的參數為全局變數:
public const string RADIO_GROUP_ITEM_XPATH = "items/item";
生成RadioGroup並給其賦值
RadioGroup radioGroupX = new RadioGroup(); foreach (string s in XradioGrupItems) { //每一個單元按鈕對應的選項item RadioGroupItem item = new RadioGroupItem(); //設置選項的value值 item.Value = s; //設置選項的描述值 即 要顯示的值 item.Description = s; //使選項啟用 item.Enabled = true; //將新增的選項添加到radiogroup的Items中 radioGroupX.Properties.Items.Add(item); } //設置預設選中值 radioGroupX.EditValue = xAttribute.Title; //設置寬度 radioGroupX.Width = Global.CHART_OPTION_WIDTH; //加1 保持與Y軸高度一致 radioGroupX.Height = Global.RADIO_HEIGHT * (XradioGrupItems.Count + 1); //設置位置 radioGroupX.Location = new Point(Global.NOGROUP_HORIZONTAL_DISTANCE , Global.GROUP_VERTICAL_DISTANCE); //name radioGroupX.Name = "radioGroupX"; //設置父級容器 radioGroupX.Parent = panelControlX;