EChart_ParticlesComposition.cs 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177
  1. using CefSharp;
  2. using CefSharp.WinForms;
  3. using Newtonsoft.Json;
  4. using OTSIncAReportApp.DataOperation.DataAccess;
  5. using OTSIncAReportApp.DataOperation.Model;
  6. using OTSIncAReportApp.OTSDataMgrFunction;
  7. using OTSIncAReportApp.OTSSampleReportInfo;
  8. using OTSIncAReportApp.OTSTemplateDesigner;
  9. using OTSIncAReportApp.SysMgrTools;
  10. using OTSIncAReportGrids;
  11. using System;
  12. using System.Collections;
  13. using System.Collections.Generic;
  14. using System.Data;
  15. using System.IO;
  16. using System.Linq;
  17. using System.Windows.Forms;
  18. namespace OTSIncAReportApp.Control_ECharts
  19. {
  20. /// <summary>
  21. /// 各图char相关模块
  22. /// </summary>
  23. public partial class EChart_ParticlesComposition : UserControl
  24. {
  25. Hashtable table;
  26. #region 图表相关变量
  27. //y轴名称
  28. public string m_str_AxisY { get; set; }
  29. //定义图片
  30. //JsEvent js;
  31. //定义图片base64
  32. public string pic { get; set; }
  33. //定义图形类型
  34. public string type { get; set; }
  35. //图形数据
  36. public string data { get; set; }
  37. string url = "Resources/HTML/charts.html";
  38. //数据图类型:常用夹杂物分类CommonlyUsedClassify ,颗粒成分PComponent,元素成分EComponent,颗粒尺寸分布PSize
  39. string ComSel { get; set; }
  40. frmReportApp m_ReportApp;
  41. List<int> FLID = new List<int>() { 0, 1, 2, 4, 6, 7, 8, 9 };
  42. List<string> NameList = new List<string>() { "过小颗粒", "过大颗粒", "亮度不在分析范围内的颗粒", "低计数率颗粒", "不含分析元素的颗粒", "非夹杂物颗粒SiC", "非夹杂物颗粒FeO", "未识别颗粒" };
  43. private frmReportConditionChoose m_conditionChoose;
  44. private ResultDataMgr m_DataMgr;
  45. Export_ReportTemplate m_export_reporttemplate;
  46. #endregion
  47. #region 窗体加载及构造函数
  48. public EChart_ParticlesComposition(frmReportApp ReportApp, string comsel)
  49. {
  50. ComSel = comsel;
  51. m_ReportApp = ReportApp;
  52. m_conditionChoose = ReportApp.m_conditionChoose;
  53. m_DataMgr = ReportApp.m_rstDataMgr;
  54. InitializeComponent();
  55. //国际化
  56. Language lan = new Language();
  57. table = lan.GetNameTable("CompositionDistributionGrid");
  58. m_export_reporttemplate = new Export_ReportTemplate();
  59. }
  60. private void EChart_ParticlesComposition_Load(object sender, EventArgs e)
  61. {
  62. NameList = new List<string>() { table["partcletype0"].ToString(), table["partcletype1"].ToString(), table["partcletype2"].ToString(), table["partcletype4"].ToString(), table["partcletype6"].ToString(), table["partcletype7"].ToString(), table["partcletype8"].ToString(), table["partcletype9"].ToString() };
  63. //int idx = m_ReportApp.m_DataMgrFun.GetPropIndexByPropItemName(m_ReportApp.SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE);
  64. //string sou = m_ReportApp.SourceGridData.ConditionItemList[idx].itemVal.ToString();
  65. string sou = m_conditionChoose.m_SourceGridData.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE).ToString();
  66. if (sou.Contains("+"))
  67. {
  68. if (m_ReportApp.more)
  69. {
  70. m_ReportApp.trans = false;
  71. }
  72. else
  73. {
  74. m_ReportApp.trans = true;
  75. }
  76. m_ReportApp.more = true;
  77. //获取到List,json的字符串
  78. ChartdateMore list_json_str = GetListJsonStr();
  79. url = "Resources/HTML/chartsMore.html";
  80. m_ReportApp.data = JsonConvert.SerializeObject(list_json_str);
  81. }
  82. else
  83. {
  84. if (!m_ReportApp.more)
  85. {
  86. m_ReportApp.trans = false;
  87. }
  88. else
  89. {
  90. m_ReportApp.trans = true;
  91. }
  92. m_ReportApp.more = false;
  93. //获取到List,json的字符串
  94. List<Chartdate> list_json_str = GetListJsonStrByChartStruct();
  95. url = "Resources/HTML/charts.html";
  96. m_ReportApp.data = JsonConvert.SerializeObject(list_json_str[0]);
  97. }
  98. InitBrowser();
  99. }
  100. #endregion
  101. #region 获取单数据源
  102. private Chartdate GetCommonlyUsedClassifyData(string path)
  103. {
  104. string spinel = table["str20"].ToString();
  105. string oxide = table["str21"].ToString();
  106. string SulfurOxide = table["str22"].ToString();
  107. string nitrides = table["str23"].ToString();
  108. string sulfide = table["str24"].ToString();
  109. DataOperation.DataAccess.ParticleData particledata = new DataOperation.DataAccess.ParticleData(path);
  110. //创建新的图形数据源
  111. Chartdate chart = new Chartdate();
  112. chart.Title = m_ReportApp.m_reportname;
  113. chart.YName = m_str_AxisY;
  114. //int idx = m_ReportApp.m_DataMgrFun.GetPropIndexByPropItemName(m_ReportApp.SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  115. //int sel = m_ReportApp.SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(m_ReportApp.SourceGridData.ConditionItemList[idx].itemVal.ToString());
  116. //int sel = m_conditionChoose.m_SourceGridData.GetPropIndexByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  117. int sel = m_ReportApp.m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  118. DataTable dt = new DataTable();
  119. if (sel == 1)
  120. {
  121. List<Particle> particles = m_ReportApp.GetSelectedParticles();
  122. int SPINEL = 0;
  123. int OXIDE = 0;
  124. int SULFIDE_OXIDE = 0;
  125. int NITRIDE = 0;
  126. int SULFIDE = 0;
  127. for (int i = 0; i < m_ReportApp.GetSelectedParticles().Count; i++)
  128. {
  129. //SPINEL
  130. if ((particles[i].TypeId >= 10100 || particles[i].TypeId <= 10199) || (particles[i].TypeId >= 12200 || particles[i].TypeId <= 12299) || (particles[i].TypeId >= 11300 || particles[i].TypeId <= 11299))
  131. {
  132. SPINEL = SPINEL + 1;
  133. }
  134. //OXIDE
  135. if (particles[i].TypeId >= 10000 || particles[i].TypeId <= 10999)
  136. {
  137. OXIDE = OXIDE + 1;
  138. }
  139. //SULFIDE_OXIDE
  140. if ((particles[i].TypeId >= 11200 || particles[i].TypeId <= 11299) || (particles[i].TypeId >= 11400 || particles[i].TypeId <= 11499) || (particles[i].TypeId >= 11200 || particles[i].TypeId <= 11599))
  141. {
  142. SULFIDE_OXIDE = SULFIDE_OXIDE + 1;
  143. }
  144. //NITRIDE
  145. if (particles[i].TypeId >= 12000 || particles[i].TypeId <= 12999)
  146. {
  147. NITRIDE = NITRIDE + 1;
  148. }
  149. //SULFIDE
  150. if (particles[i].TypeId >= 11000 || particles[i].TypeId <= 11999)
  151. {
  152. SULFIDE = SULFIDE + 1;
  153. }
  154. }
  155. DataTable dataTable = new DataTable();
  156. dataTable.Columns.Add("SPINEL", typeof(String));
  157. dataTable.Columns.Add("OXIDE", typeof(String));
  158. dataTable.Columns.Add("SULFIDE_OXIDE", typeof(String));
  159. dataTable.Columns.Add("NITRIDE", typeof(String));
  160. dataTable.Columns.Add("SULFIDE", typeof(String));
  161. dataTable.Rows.Add();
  162. dataTable.Rows[0]["SPINEL"] = SPINEL.ToString();
  163. dataTable.Rows[0]["OXIDE"] = OXIDE.ToString();
  164. dataTable.Rows[0]["SULFIDE_OXIDE"] = SULFIDE_OXIDE.ToString();
  165. dataTable.Rows[0]["NITRIDE"] = NITRIDE.ToString();
  166. dataTable.Rows[0]["SULFIDE"] = SULFIDE.ToString();
  167. dt = dataTable;
  168. }
  169. else
  170. {
  171. dt = particledata.GetCommonlyUsedClassifyData();
  172. }
  173. //DataTable dt = dataTable;
  174. //设置标签名称
  175. List<string> listName = new List<string>();
  176. listName.Add(spinel);
  177. listName.Add(oxide);
  178. listName.Add(SulfurOxide);
  179. listName.Add(nitrides);
  180. listName.Add(sulfide);
  181. chart.ListName = listName;
  182. //设置数据
  183. List<Item> listData = new List<Item>();
  184. //ListData
  185. for (int k = 0; k < dt.Rows.Count; k++)
  186. {
  187. try
  188. {
  189. Item item_SPINEL = new Item()
  190. {
  191. value = decimal.Round(decimal.Parse(dt.Rows[k]["SPINEL"].ToString()), 2).ToString(),
  192. name = spinel
  193. };
  194. listData.Add(item_SPINEL);
  195. Item item_OXIDE = new Item()
  196. {
  197. value = decimal.Round(decimal.Parse(dt.Rows[k]["OXIDE"].ToString()), 2).ToString(),
  198. name = oxide
  199. };
  200. listData.Add(item_OXIDE);
  201. Item item_SULFIDE_OXIDE = new Item()
  202. {
  203. value = decimal.Round(decimal.Parse(dt.Rows[k]["SULFIDE_OXIDE"].ToString()), 2).ToString(),
  204. name = SulfurOxide
  205. };
  206. listData.Add(item_SULFIDE_OXIDE);
  207. Item item_NITRIDE = new Item()
  208. {
  209. value = decimal.Round(decimal.Parse(dt.Rows[k]["NITRIDE"].ToString()), 2).ToString(),
  210. name = nitrides
  211. };
  212. listData.Add(item_NITRIDE);
  213. Item item_SULFIDE = new Item()
  214. {
  215. value = decimal.Round(decimal.Parse(dt.Rows[k]["SULFIDE"].ToString()), 2).ToString(),
  216. name = sulfide
  217. };
  218. listData.Add(item_SULFIDE);
  219. }
  220. catch
  221. {
  222. Item item = new Item()
  223. {
  224. value = "",
  225. name = ""
  226. };
  227. listData.Add(item);
  228. }
  229. }
  230. chart.ListData = listData;
  231. return chart;
  232. }
  233. private Chartdate GetInclusionAreaRatioData(string path)
  234. {
  235. DataOperation.DataAccess.ParticleData particledata = new DataOperation.DataAccess.ParticleData(path);
  236. //创建新的图形数据源
  237. Chartdate chart = new Chartdate();
  238. chart.Title = m_ReportApp.m_reportname;
  239. chart.YName = m_str_AxisY;
  240. int sel = m_ReportApp.m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  241. DataTable dt = particledata.GetAreaByAllIncA("");
  242. //设置标签名称
  243. List<string> listName = new List<string>();
  244. //ListName
  245. for (int i = 0; i < dt.Rows.Count; i++)
  246. {
  247. if (Convert.ToInt32(dt.Rows[i]["TypeId"]) < 100)
  248. {
  249. continue;
  250. }
  251. listName.Add(dt.Rows[i]["TypeName"].ToString());
  252. }
  253. //for (int i = 0; i < dt.Rows.Count; i++)
  254. //{
  255. // if (Convert.ToInt32(dt.Rows[i]["TypeId"]) > 100)
  256. // {
  257. // continue;
  258. // }
  259. // int index = FLID.IndexOf(Convert.ToInt32(dt.Rows[i]["TypeId"]));
  260. // if (index == -1)
  261. // {
  262. // index = 7;
  263. // }
  264. // string name = NameList[index];
  265. // if (listName.IndexOf(name) == -1)
  266. // {
  267. // listName.Add(name);
  268. // }
  269. //}
  270. chart.ListName = listName;
  271. //设置数据
  272. List<Item> listData = new List<Item>();
  273. //ListData
  274. for (int k = 0; k < dt.Rows.Count; k++)
  275. {
  276. string str = dt.Rows[k]["ar"].ToString();
  277. string name = dt.Rows[k]["TypeName"].ToString();
  278. if (Convert.ToInt32(dt.Rows[k]["TypeId"]) < 100)
  279. {
  280. continue;
  281. }
  282. Item item = new Item()
  283. {
  284. value = decimal.Round(decimal.Parse(dt.Rows[k]["ar"].ToString()), 2).ToString(),
  285. name = name
  286. };
  287. listData.Add(item);
  288. }
  289. chart.ListData = listData;
  290. return chart;
  291. }
  292. private Chartdate GetInclusionAreaRatioClassData(string path)
  293. {
  294. //创建新的图形数据源
  295. Chartdate chart = new Chartdate();
  296. chart.Title = m_ReportApp.m_reportname;
  297. chart.YName = m_str_AxisY;
  298. //计算分类整个表的数据
  299. DataTable dt= ClassificationIntegration(path);
  300. List<string> listName = new List<string>();
  301. //ListName
  302. for (int i = 0; i < dt.Rows.Count; i++)
  303. {
  304. listName.Add(dt.Rows[i]["e1"].ToString());
  305. }
  306. chart.ListName = listName;
  307. //DataTable dt
  308. //设置数据
  309. List<Item> listData = new List<Item>();
  310. //ListData
  311. for (int k = 0; k < dt.Rows.Count; k++)
  312. {
  313. string str = dt.Rows[k]["e3"].ToString();
  314. string name = dt.Rows[k]["e1"].ToString();
  315. Item item = new Item()
  316. {
  317. value = decimal.Round(decimal.Parse(dt.Rows[k]["e3"].ToString()), 2).ToString(),
  318. name = name
  319. };
  320. listData.Add(item);
  321. }
  322. chart.ListData = listData;
  323. return chart;
  324. }
  325. private DataTable ClassificationIntegration(string path )
  326. {
  327. //------------------加载模块,获取数据-------------------------------------------------
  328. ResultGrid ls_resultgrid = new ResultGrid(m_ReportApp);
  329. Dictionary<string, string> keyValues_ResultGrid = ls_resultgrid.GetData_ResultGrid();
  330. //------------------加载模块,获取数据结束----------------------------------------------
  331. Dictionary<string, string>.Enumerator en = keyValues_ResultGrid.GetEnumerator();
  332. string str_SCZS = "";
  333. keyValues_ResultGrid.TryGetValue(ls_resultgrid.table["col5"].ToString(), out str_SCZS);//视场总数
  334. DataOperation.DataAccess.ParticleData particledata = new DataOperation.DataAccess.ParticleData(path);
  335. DataTable AreaInformationOfAllElements = particledata.GetAreaByAllIncA("");//获取所有分类面积和数量信息
  336. DataTable AllAnalysisDetails = new DataTable();
  337. AllAnalysisDetails.Columns.Add("Name");
  338. AllAnalysisDetails.Columns.Add("TypeId");
  339. AllAnalysisDetails.Columns.Add("Area", typeof(double));
  340. AllAnalysisDetails.Columns.Add("Class");
  341. AllAnalysisDetails.Columns.Add("Cunt", typeof(double));
  342. for (int i = 0; i < AreaInformationOfAllElements.Rows.Count; i++)
  343. {
  344. DataRow dr2 = AllAnalysisDetails.NewRow();
  345. dr2["Name"] = AreaInformationOfAllElements.Rows[i]["TypeName"].ToString();
  346. dr2["Area"] = Convert.ToDouble(AreaInformationOfAllElements.Rows[i]["ar"]);
  347. dr2["TypeId"] = AreaInformationOfAllElements.Rows[i]["TypeId"].ToString();
  348. dr2["Cunt"] = Convert.ToDouble(AreaInformationOfAllElements.Rows[i]["con"]);
  349. dr2["Class"] = AreaInformationOfAllElements.Rows[i]["GroupName"].ToString();
  350. AllAnalysisDetails.Rows.Add(dr2);
  351. }
  352. //按照list列表进行物质类排序,物质类中的元素分类按照面积的大小进行排序
  353. List<string> ClassName = new List<string>();
  354. DataTable getClass_dt = particledata.GetAllClass();
  355. for (int i = 0; i < getClass_dt.Rows.Count; i++)
  356. {
  357. ClassName.Add(getClass_dt.Rows[i]["GroupName"].ToString());
  358. }
  359. DataTable AreaRatio = new DataTable();
  360. AreaRatio.TableName = "InclusionAreaRatio";
  361. AreaRatio.Columns.Add("e1");
  362. AreaRatio.Columns.Add("e2");
  363. AreaRatio.Columns.Add("e3", typeof(double));
  364. AreaRatio.Columns.Add("e4");
  365. AreaRatio.Columns.Add("e5");
  366. AreaRatio.Columns.Add("Cunt", typeof(int));
  367. //获取夹杂物的总面积用于计算夹杂物类别的占比(gridview最后一个固定是未识别颗粒,要排除未识别颗粒所以for循环至grid view长度减一)
  368. double totalInclusionArea = 0;
  369. totalInclusionArea = Convert.ToDouble(decimal.Parse(AllAnalysisDetails.Compute("sum(Area)", "").ToString()));
  370. for (int i = 0; i < AllAnalysisDetails.Rows.Count; i++)
  371. {
  372. DataRow dr2 = AreaRatio.NewRow();
  373. dr2["e1"] = AllAnalysisDetails.Rows[i]["Class"].ToString();
  374. dr2["e2"] = AllAnalysisDetails.Rows[i]["Name"].ToString();
  375. dr2["e3"] = Convert.ToDouble(AllAnalysisDetails.Rows[i]["Area"]);
  376. dr2["e4"] = Math.Round((Convert.ToDouble(AllAnalysisDetails.Rows[i]["Area"]) / totalInclusionArea) * 100, 2);
  377. dr2["e5"] = Math.Round((Convert.ToDouble(AllAnalysisDetails.Rows[i]["Area"]) / Convert.ToDouble(str_SCZS)) * 100, 4);
  378. dr2["Cunt"]= AllAnalysisDetails.Rows[i]["Cunt"].ToString();
  379. AreaRatio.Rows.Add(dr2);
  380. }
  381. DataTable AreaRatio_dt = AreaRatio.Copy();
  382. AreaRatio_dt.Clear();
  383. for (int i = 0; i < ClassName.Count(); i++)
  384. {
  385. DataTable dt = AreaRatio.Copy();
  386. dt.Clear();
  387. for (int a = 0; a < AreaRatio.Rows.Count; a++)
  388. {
  389. if (AreaRatio.Rows[a]["e1"].ToString() == ClassName[i].ToString())
  390. {
  391. dt.Rows.Add(AreaRatio.Rows[a].ItemArray);
  392. }
  393. }
  394. DataView dv = dt.DefaultView;
  395. dv.Sort = "e3 DESC";
  396. DataTable dt_Element = dv.ToTable();
  397. for (int a = 0; a < dt_Element.Rows.Count; a++)
  398. {
  399. AreaRatio_dt.Rows.Add(dt_Element.Rows[a].ItemArray);
  400. }
  401. }
  402. DataTable AllAnalysisDetails1 = AreaRatio_dt.Copy();
  403. AllAnalysisDetails1.Clear();
  404. for (int i = 0; i < ClassName.Count; i++)
  405. {
  406. DataTable dt = AreaRatio_dt.Copy();
  407. dt.Clear();
  408. for (int a = 0; a < AreaRatio_dt.Rows.Count; a++)
  409. {
  410. if (AreaRatio_dt.Rows[a]["e1"].ToString() == ClassName[i].ToString())
  411. {
  412. dt.Rows.Add(AreaRatio_dt.Rows[a].ItemArray);
  413. }
  414. }
  415. if (dt.Rows.Count > 0)
  416. {
  417. double totalInclusionArea2 = Convert.ToDouble(decimal.Parse(AreaRatio_dt.Compute("sum(e3)", "").ToString()));
  418. double Area = Convert.ToDouble(decimal.Parse(dt.Compute("sum(e3)", "").ToString()));
  419. int cunt= Convert.ToInt32(decimal.Parse(dt.Compute("sum(Cunt)", "").ToString()));
  420. DataRow dr3 = AllAnalysisDetails1.NewRow();
  421. dr3["e1"] = ClassName[i].ToString();
  422. dr3["e3"] = Math.Round(Area, 2);
  423. //Convert.ToDouble(decimal.Parse(dt.Compute("sum(e3)", "").ToString()));
  424. dr3["e4"] = Math.Round((Convert.ToDouble(dt.Rows[0]["e3"]) / totalInclusionArea2) * 100, 2);
  425. dr3["e5"] = Math.Round((Convert.ToDouble(dt.Rows[0]["e3"]) / Convert.ToDouble(str_SCZS)) * 100, 4);
  426. dr3["Cunt"] = cunt;
  427. AllAnalysisDetails1.Rows.Add(dr3);
  428. }
  429. }
  430. return AllAnalysisDetails1;
  431. }
  432. /// <summary>
  433. /// 获取颗粒成分数据
  434. /// </summary>
  435. private Chartdate GetPComponentData(string path)
  436. {
  437. DataOperation.DataAccess.ParticleData particledata = new DataOperation.DataAccess.ParticleData(path);
  438. //创建新的图形数据源
  439. Chartdate chart = new Chartdate();
  440. chart.Title = m_ReportApp.m_reportname;
  441. chart.YName = m_str_AxisY;
  442. //int idx = m_ReportApp.m_DataMgrFun.GetPropIndexByPropItemName(m_ReportApp.SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  443. //int sel = m_ReportApp.SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(m_ReportApp.SourceGridData.ConditionItemList[idx].itemVal.ToString());
  444. //int sel = m_conditionChoose.m_SourceGridData.GetPropIndexByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  445. int sel = m_ReportApp.m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  446. string filedAndParticl = "";
  447. if (sel == 1)
  448. {
  449. List<OTSIncAReportApp.DataOperation.Model.Particle> selectParticles = m_ReportApp.GetSelectedParticles();
  450. foreach (var item in selectParticles)
  451. {
  452. filedAndParticl = filedAndParticl + "," + (item.FieldId.ToString() + "-" + item.ParticleId.ToString());
  453. }
  454. if (filedAndParticl != "")
  455. {
  456. filedAndParticl = filedAndParticl + ",";
  457. }
  458. }
  459. DataTable dt = particledata.GetParticleListForParticlSize("area", filedAndParticl);
  460. //设置标签名称
  461. List<string> listName = new List<string>();
  462. //ListName
  463. for (int i = 0; i < dt.Rows.Count; i++)
  464. {
  465. if (Convert.ToInt32(dt.Rows[i]["TypeId"]) < 100)
  466. {
  467. continue;
  468. }
  469. listName.Add(dt.Rows[i]["TypeName"].ToString());
  470. }
  471. for (int i = 0; i < dt.Rows.Count; i++)
  472. {
  473. if (Convert.ToInt32(dt.Rows[i]["TypeId"]) > 100)
  474. {
  475. continue;
  476. }
  477. int index = FLID.IndexOf(Convert.ToInt32(dt.Rows[i]["TypeId"]));
  478. if (index == -1)
  479. {
  480. index = 7;
  481. }
  482. string name = NameList[index];
  483. if (listName.IndexOf(name) == -1)
  484. {
  485. listName.Add(name);
  486. }
  487. }
  488. chart.ListName = listName;
  489. //设置数据
  490. List<Item> listData = new List<Item>();
  491. //ListData
  492. for (int k = 0; k < dt.Rows.Count; k++)
  493. {
  494. string str = dt.Rows[k]["con"].ToString();
  495. string name = dt.Rows[k]["TypeName"].ToString();
  496. if (Convert.ToInt32(dt.Rows[k]["TypeId"]) < 100)
  497. {
  498. int index = FLID.IndexOf(Convert.ToInt32(dt.Rows[k]["TypeId"]));
  499. if (index == -1)
  500. {
  501. index = 7;
  502. }
  503. name = NameList[index];
  504. }
  505. Item item = new Item()
  506. {
  507. value = decimal.Round(decimal.Parse(str), 2).ToString(),
  508. name = name
  509. };
  510. listData.Add(item);
  511. }
  512. chart.ListData = listData;
  513. return chart;
  514. }
  515. /// <summary>
  516. /// 获取元素成分数据
  517. /// </summary>
  518. private Chartdate GetEComponentData(string path)
  519. {
  520. DataOperation.DataAccess.ParticleData particledata = new DataOperation.DataAccess.ParticleData(path);
  521. //创建新的图形数据源
  522. Chartdate chart = new Chartdate();
  523. chart.Title = m_ReportApp.m_reportname;
  524. chart.YName = m_str_AxisY;
  525. //int idx = m_ReportApp.m_DataMgrFun.GetPropIndexByPropItemName(m_ReportApp.SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  526. //int sel = m_ReportApp.SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(m_ReportApp.SourceGridData.ConditionItemList[idx].itemVal.ToString());
  527. //int sel = m_conditionChoose.m_SourceGridData.GetPropIndexByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  528. int sel = m_ReportApp.m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  529. string filedAndParticl = "";
  530. if (sel == 1)
  531. {
  532. List<OTSIncAReportApp.DataOperation.Model.Particle> selectParticles = m_ReportApp.GetSelectedParticles();
  533. foreach (var item in selectParticles)
  534. {
  535. filedAndParticl = filedAndParticl + "," + (item.FieldId.ToString() + "-" + item.ParticleId.ToString());
  536. }
  537. if (filedAndParticl != "")
  538. {
  539. filedAndParticl = filedAndParticl + ",";
  540. }
  541. }
  542. DataTable dt = particledata.GetElementForArea(filedAndParticl);
  543. //设置标签名称
  544. List<string> listName = new List<string>();
  545. //ListName
  546. for (int i = 0; i < dt.Rows.Count; i++)
  547. {
  548. listName.Add(dt.Rows[i]["name"].ToString());
  549. }
  550. chart.ListName = listName;
  551. //设置数据
  552. List<Item> listData = new List<Item>();
  553. //ListData
  554. for (int k = 0; k < dt.Rows.Count; k++)
  555. {
  556. string str = dt.Rows[k]["earea"].ToString();
  557. try
  558. {
  559. Item item = new Item()
  560. {
  561. value = decimal.Round(decimal.Parse(str), 2).ToString(),
  562. name = dt.Rows[k]["name"].ToString()
  563. };
  564. listData.Add(item);
  565. }
  566. catch
  567. {
  568. Item item = new Item()
  569. {
  570. value = str,
  571. name = dt.Rows[k]["name"].ToString()
  572. };
  573. listData.Add(item);
  574. }
  575. }
  576. chart.ListData = listData;
  577. return chart;
  578. }
  579. /// <summary>
  580. /// 获取此尺寸分布图数据
  581. /// </summary>
  582. private Chartdate GetPSizeData(string path)
  583. {
  584. DataOperation.DataAccess.ParticleData particledata = new DataOperation.DataAccess.ParticleData(path);
  585. //创建新的图形数据源
  586. Chartdate chart = new Chartdate();
  587. chart.Title = m_ReportApp.m_reportname;
  588. chart.YName = m_str_AxisY;
  589. //设置标签名称
  590. List<string> listName = new List<string>();
  591. //获取粒级表
  592. string pathe = m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFileFolder + m_ReportApp.m_rstDataMgr.m_RptConfigFile.PartSizeFile;
  593. DataSet ds = DataOperation.DataAccess.XMLoperate.GetXml(pathe);
  594. string sizestr = ds.Tables[0].Rows[0]["Sizes"].ToString();
  595. for (int i = 0; i < sizestr.Split(',').Length - 1; i++)
  596. {
  597. if (sizestr.Split(',')[i].Length > 0)
  598. {
  599. double d1 = Convert.ToDouble(sizestr.Split(',')[i]);
  600. double d2 = Convert.ToDouble(sizestr.Split(',')[i + 1]);
  601. listName.Add(d1.ToString() + "~" + d2.ToString());
  602. }
  603. }
  604. double d = Convert.ToDouble(sizestr.Split(',')[sizestr.Split(',').Length - 1]);
  605. listName.Add(d.ToString() + "~MAX");
  606. chart.ListName = listName;
  607. //int idx = m_ReportApp.m_DataMgrFun.GetPropIndexByPropItemName(m_ReportApp.SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  608. //int sel = m_ReportApp.SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(m_ReportApp.SourceGridData.ConditionItemList[idx].itemVal.ToString());
  609. //int sel = m_conditionChoose.m_SourceGridData.GetPropIndexByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  610. int sel = m_ReportApp.m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  611. string filedAndParticl = "";
  612. if (sel == 1)
  613. {
  614. List<OTSIncAReportApp.DataOperation.Model.Particle> selectParticles = m_ReportApp.GetSelectedParticles();
  615. foreach (var item in selectParticles)
  616. {
  617. filedAndParticl = filedAndParticl + "," + (item.FieldId.ToString() + "-" + item.ParticleId.ToString());
  618. }
  619. if (filedAndParticl != "")
  620. {
  621. filedAndParticl = filedAndParticl + ",";
  622. }
  623. }
  624. //idx = m_ReportApp.m_DataMgrFun.GetPropIndexByPropItemName(m_ReportApp.SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE);
  625. //string con = m_ReportApp.SourceGridData.ConditionItemList[idx].itemVal.ToString();
  626. string con = m_conditionChoose.m_SourceGridData.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE).ToString();
  627. string po = "";
  628. switch (con)
  629. {
  630. case "DMAX":
  631. po = "DMAX";
  632. break;
  633. case "DMIN":
  634. po = "DMIN";
  635. break;
  636. case "CIRCLE":
  637. po = "Area";
  638. break;
  639. case "FERET":
  640. po = "DFERET";
  641. break;
  642. }
  643. DataTable dtp = particledata.GetParticleAll(filedAndParticl);
  644. //设置数据
  645. List<Item> listData = new List<Item>();
  646. //ListData
  647. for (int k = 0; k < listName.Count; k++)
  648. {
  649. string str = listName[k];
  650. string d1 = str.Split('~')[0];
  651. string d2 = str.Split('~')[1];
  652. if (d2 == "MAX")
  653. {
  654. d2 = "999";
  655. }
  656. DataRow[] datas = dtp.Select(getWhere(d2, d1, po));
  657. Item item = new Item()
  658. {
  659. value = datas.Count().ToString(),
  660. name = str
  661. };
  662. listData.Add(item);
  663. }
  664. chart.ListData = listData;
  665. return chart;
  666. }
  667. private string getWhere(string max, string min, string col)
  668. {
  669. return col + ">=" + min + " and " + col + "<=" + max;
  670. }
  671. #endregion
  672. #region echarts
  673. /// <summary>
  674. /// 通过m_list_chartstruct,组合json数据格式
  675. /// </summary>
  676. /// <returns></returns>
  677. private List<Chartdate> GetListJsonStrByChartStruct()
  678. {
  679. List<Chartdate> list = new List<Chartdate>();
  680. Chartdate chartdate = new Chartdate();
  681. switch (ComSel)
  682. {
  683. case "CommonlyUsedClassify":
  684. //chartdate = GetCommonlyUsedClassifyData(m_DataMgr.ResultFilesList[m_DataMgr.GetWorkingResult()].FilePath);
  685. chartdate = GetInclusionAreaRatioClassData(m_DataMgr.ResultFilesList[m_DataMgr.GetWorkingResult()].FilePath);
  686. break;
  687. case "PComponent":
  688. chartdate = GetPComponentData(m_DataMgr.ResultFilesList[m_DataMgr.GetWorkingResult()].FilePath);
  689. break;
  690. case "EComponent":
  691. chartdate = GetEComponentData(m_DataMgr.ResultFilesList[m_DataMgr.GetWorkingResult()].FilePath);
  692. break;
  693. case "PSize":
  694. chartdate = GetPSizeData(m_DataMgr.ResultFilesList[m_DataMgr.GetWorkingResult()].FilePath);
  695. break;
  696. case "InclusionareaRatio":
  697. chartdate = GetInclusionAreaRatioData(m_DataMgr.ResultFilesList[m_DataMgr.GetWorkingResult()].FilePath);
  698. break;
  699. case "InclusionareaClassRatio":
  700. chartdate=GetInclusionAreaRatioClassData(m_DataMgr.ResultFilesList[m_DataMgr.GetWorkingResult()].FilePath);
  701. break;
  702. }
  703. list.Add(chartdate);
  704. return list;
  705. }
  706. /// <summary>
  707. /// 通过m_list_chartstruct,组合json数据格式
  708. /// </summary>
  709. /// <returns></returns>
  710. private ChartdateMore GetListJsonStr()
  711. {
  712. //int idx = m_ReportApp.m_DataMgrFun.GetPropIndexByPropItemName(m_ReportApp.SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  713. //int sel = m_ReportApp.SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(m_ReportApp.SourceGridData.ConditionItemList[idx].itemVal.ToString());
  714. int sel = m_conditionChoose.m_SourceGridData.GetPropIndexByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  715. string filedAndParticl = "";
  716. if (sel == 1)
  717. {
  718. List<OTSIncAReportApp.DataOperation.Model.Particle> selectParticles = m_ReportApp.GetSelectedParticles();
  719. foreach (var item in selectParticles)
  720. {
  721. filedAndParticl = filedAndParticl + "," + (item.FieldId.ToString() + "-" + item.ParticleId.ToString());
  722. }
  723. if (filedAndParticl != "")
  724. {
  725. filedAndParticl = filedAndParticl + ",";
  726. }
  727. }
  728. DataOperation.DataAccess.ParticleData particledata = null;
  729. DataTable dt = new DataTable();
  730. ChartdateMore chart = new ChartdateMore();
  731. chart.Title = m_ReportApp.m_reportname;
  732. chart.YName = m_str_AxisY;
  733. List<string> listName = new List<string>();
  734. List<string> soursName = new List<string>();
  735. List<List<Item>> listDataMore = new List<List<Item>>();
  736. //idx = m_ReportApp.m_DataMgrFun.GetPropIndexByPropItemName(m_ReportApp.SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE);
  737. //string sou = m_ReportApp.SourceGridData.ConditionItemList[idx].itemVal.ToString();
  738. string sou = m_conditionChoose.m_SourceGridData.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE).ToString();
  739. if (sou.Contains("+"))
  740. {
  741. for (int i = 0; i < sou.Split('+').Length; i++)
  742. {
  743. DataOperation.Model.ResultFile resultFile = m_DataMgr.ResultFilesList.Find(s => s.FileName == sou.Split('+')[i]);
  744. if (resultFile == null)
  745. {
  746. continue;
  747. }
  748. soursName.Add(resultFile.FileName);
  749. particledata = new DataOperation.DataAccess.ParticleData(resultFile.FilePath);
  750. switch (ComSel)
  751. {
  752. case "CommonlyUsedClassify":
  753. break;
  754. case "PComponent":
  755. //创建新的图形数据源
  756. dt = particledata.GetParticleListByIncA("area");
  757. //设置标签名称
  758. for (int j = 0; j < dt.Rows.Count; j++)
  759. {
  760. if (Convert.ToInt32(dt.Rows[j]["TypeId"]) < 100)
  761. {
  762. continue;
  763. }
  764. string name = dt.Rows[j]["TypeName"].ToString();
  765. if (!listName.Contains(name))
  766. {
  767. listName.Add(name);
  768. }
  769. }
  770. for (int j = 0; j < dt.Rows.Count; j++)
  771. {
  772. if (Convert.ToInt32(dt.Rows[j]["TypeId"]) > 100)
  773. {
  774. continue;
  775. }
  776. int index = FLID.IndexOf(Convert.ToInt32(dt.Rows[j]["TypeId"]));
  777. if (index == -1)
  778. {
  779. index = 7;
  780. }
  781. string name = NameList[index];
  782. if (!listName.Contains(name))
  783. {
  784. listName.Add(name);
  785. }
  786. }
  787. //设置数据
  788. List<Item> listData = new List<Item>();
  789. //ListData
  790. for (int k = 0; k < dt.Rows.Count; k++)
  791. {
  792. string str = dt.Rows[k]["con"].ToString();
  793. string name = dt.Rows[k]["TypeName"].ToString();
  794. if (Convert.ToInt32(dt.Rows[k]["TypeId"]) < 100)
  795. {
  796. int index = FLID.IndexOf(Convert.ToInt32(dt.Rows[k]["TypeId"]));
  797. name = NameList[index];
  798. }
  799. Item item = new Item()
  800. {
  801. value = decimal.Round(decimal.Parse(str), 2).ToString(),
  802. name = name
  803. };
  804. listData.Add(item);
  805. }
  806. listDataMore.Add(listData);
  807. break;
  808. case "EComponent":
  809. //创建新的图形数据源
  810. dt = particledata.GetElementForArea(filedAndParticl);
  811. //ListName
  812. for (int j = 0; j < dt.Rows.Count; j++)
  813. {
  814. string name = dt.Rows[j]["name"].ToString();
  815. if (!listName.Contains(name))
  816. {
  817. listName.Add(name);
  818. }
  819. }
  820. //设置数据
  821. List<Item> listData1 = new List<Item>();
  822. //ListData
  823. for (int k = 0; k < dt.Rows.Count; k++)
  824. {
  825. string str = dt.Rows[k]["earea"].ToString();
  826. try
  827. {
  828. Item item = new Item()
  829. {
  830. value = decimal.Round(decimal.Parse(str), 2).ToString(),
  831. name = dt.Rows[k]["name"].ToString()
  832. };
  833. listData1.Add(item);
  834. }
  835. catch
  836. {
  837. Item item = new Item()
  838. {
  839. value = str,
  840. name = dt.Rows[k]["name"].ToString()
  841. };
  842. listData1.Add(item);
  843. }
  844. }
  845. listDataMore.Add(listData1);
  846. break;
  847. case "PSize":
  848. //获取粒级表
  849. string pathe = m_DataMgr.m_RptConfigFile.PartSizeFileFolder + m_DataMgr.m_RptConfigFile.PartSizeFile;
  850. DataSet ds = DataOperation.DataAccess.XMLoperate.GetXml(pathe);
  851. string sizestr = ds.Tables[0].Rows[0]["Sizes"].ToString();
  852. List<string> temp = new List<string>();
  853. for (int j = 0; j < sizestr.Split(',').Length - 1; j++)
  854. {
  855. if (sizestr.Split(',')[j].Length > 0)
  856. {
  857. double d1 = Convert.ToDouble(sizestr.Split(',')[j]);
  858. double d2 = Convert.ToDouble(sizestr.Split(',')[j + 1]);
  859. string name = d1.ToString() + "~" + d2.ToString();
  860. temp.Add(name);
  861. if (!listName.Contains(name))
  862. {
  863. listName.Add(name);
  864. }
  865. }
  866. }
  867. double d = Convert.ToDouble(sizestr.Split(',')[sizestr.Split(',').Length - 1]);
  868. string name1 = d.ToString() + "~MAX";
  869. temp.Add(name1);
  870. if (!listName.Contains(name1))
  871. {
  872. listName.Add(name1);
  873. }
  874. //string con = m_ReportApp.SourceGridData.ConditionItemList[m_ReportApp.m_DataMgrFun.GetPropIndexByPropItemName(m_ReportApp.SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE)].itemVal.ToString();
  875. string con = m_conditionChoose.m_SourceGridData.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE).ToString();
  876. string po = "";
  877. switch (con)
  878. {
  879. case "DMAX":
  880. po = "DMAX";
  881. break;
  882. case "DMIN":
  883. po = "DMIN";
  884. break;
  885. case "Area":
  886. po = "Area";
  887. break;
  888. case "FERET":
  889. po = "DFERET";
  890. break;
  891. }
  892. DataTable dtp = particledata.GetParticleAll(filedAndParticl);
  893. //设置数据
  894. List<Item> listData2 = new List<Item>();
  895. //ListData
  896. for (int k = 0; k < temp.Count; k++)
  897. {
  898. string str = temp[k];
  899. string d1 = str.Split('~')[0];
  900. string d2 = str.Split('~')[1];
  901. if (d2 == "MAX")
  902. {
  903. d2 = "999";
  904. }
  905. DataRow[] datas = dtp.Select(getWhere(d2, d1, po));
  906. Item item = new Item()
  907. {
  908. value = datas.Count().ToString(),
  909. name = str
  910. };
  911. listData2.Add(item);
  912. }
  913. listDataMore.Add(listData2);
  914. break;
  915. }
  916. }
  917. }
  918. chart.ListName = listName;
  919. chart.SoursName = soursName;
  920. chart.ListData = listDataMore;
  921. return chart;
  922. }
  923. class Chartdate
  924. {
  925. public string Title { get; set; }
  926. public string YName { get; set; }
  927. public List<string> ListName { get; set; }
  928. public List<Item> ListData { get; set; }
  929. }
  930. class ChartdateMore
  931. {
  932. public string Title { get; set; }
  933. public string YName { get; set; }
  934. public List<string> ListName { get; set; }
  935. public List<string> SoursName { get; set; }
  936. public List<List<Item>> ListData { get; set; }
  937. }
  938. class Item
  939. {
  940. public string value { get; set; }
  941. public string name { get; set; }
  942. }
  943. //获取图片
  944. private void button1_Click(object sender, EventArgs e)
  945. {
  946. //string str = GetPic();
  947. //pic = str;
  948. ////保存目录
  949. //string dir = Path.Combine(Directory.GetCurrentDirectory(), "Resources/HTML/pic");
  950. ////文件名称
  951. //string fileName = "headdemo" + DateTime.Now.ToString("yyyyMMddHHmmssff");
  952. ////保存文件所在站点位置
  953. //string filePath = Path.Combine(dir, fileName);
  954. //if (!System.IO.Directory.Exists(dir))
  955. // System.IO.Directory.CreateDirectory(dir);
  956. ////将Base64String转为图片并保存
  957. //byte[] arr2 = Convert.FromBase64String(str.Substring(str.IndexOf(',') + 1));
  958. //using (MemoryStream ms2 = new MemoryStream(arr2))
  959. //{
  960. // System.Drawing.Bitmap bmp2 = new System.Drawing.Bitmap(ms2);
  961. // bmp2.Save(filePath + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
  962. //}
  963. }
  964. /// <summary>
  965. /// 加载浏览器
  966. /// </summary>
  967. public void InitBrowser()
  968. {
  969. //加载网页
  970. if (m_ReportApp.browser == null || m_ReportApp.trans)
  971. {
  972. // 获取生成路径下网页文件的绝对路径
  973. string fileName = Path.Combine(Directory.GetCurrentDirectory(), url);
  974. //加载网页
  975. m_ReportApp.browser = new ChromiumWebBrowser(fileName);
  976. //禁止网页
  977. m_ReportApp.browser.MenuHandler = new MenuHandler();
  978. m_ReportApp.browser.Dock = DockStyle.Fill;
  979. m_ReportApp.js.MessageText = "";
  980. //添加网页到当前自定义控件
  981. this.Controls.Add(m_ReportApp.browser);
  982. //供页面调用以传递数据
  983. m_ReportApp.browser.RegisterJsObject("jsObj", m_ReportApp.js, false);
  984. //升级cef版本后新方法
  985. //CefSharpSettings.LegacyJavascriptBindingEnabled = true;
  986. //CefSharpSettings.WcfEnabled = true;
  987. //m_ReportApp.browser.JavascriptObjectRepository.Register("jsObj", m_ReportApp.js, isAsync: false, options: BindingOptions.DefaultBinder);
  988. //网页加载结束后调用事件
  989. m_ReportApp.browser.FrameLoadEnd += WebBrowser_FrameLoadEnd;
  990. }
  991. else
  992. {
  993. m_ReportApp.browser.ResetText();
  994. m_ReportApp.browser.Reload();
  995. m_ReportApp.browser.Refresh();
  996. //供页面调用以传递数据
  997. this.Controls.Add(m_ReportApp.browser);
  998. }
  999. if (m_ReportApp.timerKG)
  1000. {
  1001. timer1.Enabled = true;
  1002. }
  1003. }
  1004. /// <summary>
  1005. /// 页面加载结束后事件
  1006. /// </summary>
  1007. /// <param name="sender"></param>
  1008. /// <param name="e"></param>
  1009. private void WebBrowser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
  1010. {
  1011. if (e.Frame.IsMain)
  1012. {
  1013. //为页面图形提供数据参数
  1014. string str = m_ReportApp.data;
  1015. //执行网页脚本事件
  1016. m_ReportApp.browser.ExecuteScriptAsync("showchart('" + str + "','" + m_ReportApp.type + "')");
  1017. }
  1018. }
  1019. //public string GetPic()
  1020. //{
  1021. // return js.MessageText;
  1022. //}
  1023. //禁止网页操作,右键点击等
  1024. class MenuHandler : CefSharp.IContextMenuHandler
  1025. {
  1026. void CefSharp.IContextMenuHandler.OnBeforeContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model)
  1027. {
  1028. model.Clear();
  1029. }
  1030. bool CefSharp.IContextMenuHandler.OnContextMenuCommand(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.CefMenuCommand commandId, CefSharp.CefEventFlags eventFlags)
  1031. {
  1032. //throw new NotImplementedException();
  1033. return false;
  1034. }
  1035. void CefSharp.IContextMenuHandler.OnContextMenuDismissed(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame)
  1036. {
  1037. //throw new NotImplementedException();
  1038. }
  1039. bool CefSharp.IContextMenuHandler.RunContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model, CefSharp.IRunContextMenuCallback callback)
  1040. {
  1041. return false;
  1042. }
  1043. }
  1044. class JsEvent
  1045. {
  1046. public string MessageText { set; get; }
  1047. public void ShowTest()
  1048. {
  1049. MessageBox.Show(MessageText);
  1050. }
  1051. }
  1052. #endregion
  1053. #region EChart导出图像委托调用部份
  1054. public delegate void MyDelgate(string va);
  1055. public event MyDelgate butclic;
  1056. private void timer1_Tick(object sender, EventArgs e)
  1057. {
  1058. if (butclic == null)
  1059. return;
  1060. if (m_ReportApp.js == null)
  1061. return;
  1062. if (m_ReportApp.js.MessageText == null)
  1063. return;
  1064. if (m_ReportApp.js.MessageText != "")
  1065. {
  1066. butclic(m_ReportApp.js.MessageText);
  1067. timer1.Enabled = false;
  1068. m_ReportApp.timerKG = false;
  1069. }
  1070. }
  1071. #endregion
  1072. }
  1073. }