using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using DPumpHydr.WinFrmUI.RLT.Controls; using DPumpHydr.WinFrmUI.Volute.ViewModel; namespace DPumpHydr.WinFrmUI.Volute { /// /// 断面基本信息(形状等) /// public partial class ctrlSectionBundleInfo : ParasInfoBaseCtrl { public ctrlSectionBundleInfo() { InitializeComponent(); BuildAllTips(); BuildIcon(); } ViewModel.SectionBundleInfo _paras = null; ViewModel.HdrBaseInfo _hdrBaseInfo = null; ViewModel.GeomBaseInfo _geomBaseInfo = null; public void InitialParas(HdrBaseInfo BaseInfo, GeomBaseInfo geom_info) { this._hdrBaseInfo = BaseInfo; this._geomBaseInfo = geom_info; } public void SetBindingData(ViewModel.SectionBundleInfo vm) { this._paras = vm; if (vm == null) { return; } this.mTextBoxEdit蜗室平均速度.Text = vm.V3.ToString(); if (_paras.ShapeType == eSectionShapeType.对称) { RBtn断面对称梯形.Checked = true; RBtn不对称梯形.Checked = false; RBtn矩形.Checked = false; } if (_paras.ShapeType == eSectionShapeType.不对称) { RBtn断面对称梯形.Checked = false; RBtn不对称梯形.Checked = true; RBtn矩形.Checked = false; } if (_paras.ShapeType == eSectionShapeType.矩形) { RBtn断面对称梯形.Checked = false; RBtn不对称梯形.Checked = false; RBtn矩形.Checked = true; } RefrehPara(); } public void RefreshSectPara(ViewModel.SectionBundleInfo paras, int selectedPointIndex) { paras.CalcHeightByArea(_geomBaseInfo, selectedPointIndex); SetBindingData(paras); } private void RefrehPara() { for (var argument = 1; argument <= 8; argument++) { var controlnameGama1 = $"skyTextBox断面y1{argument}"; var controlnameRia1 = $"skyTextBox断面r1{argument}"; var controlname断面面积 = $"skyTextBox断面面积{argument}"; var controlnameHeight = $"skyTextBox断面H1{argument}"; SkyTextBox controly1 = this.Controls.Find(controlnameGama1, true).FirstOrDefault() as SkyTextBox; SkyTextBox controly2 = this.Controls.Find(controlnameRia1, true).FirstOrDefault() as SkyTextBox; SkyTextBox control断面面积 = this.Controls.Find(controlname断面面积, true).FirstOrDefault() as SkyTextBox; SkyTextBox controH1 = this.Controls.Find(controlnameHeight, true).FirstOrDefault() as SkyTextBox; if (controly1 != null) controly1.Text = _paras.GaMa_Left[argument].ToString(); if (controly2 != null) controly2.Text = _paras.R_Left[argument].ToString(); if (control断面面积 != null) control断面面积.Text = _paras.Area[argument].ToString(); if (controH1 != null) controH1.Text = _paras.H[argument].ToString(); } } public ViewModel.SectionBundleInfo GetBindingData(out string error) { if (!Verify(out error)) { return null; } error = null; if (_paras == null) { _paras = new ViewModel.SectionBundleInfo(); } if (RBtn断面对称梯形.Checked) { _paras.ShapeType = eSectionShapeType.对称; } if (RBtn不对称梯形.Checked) { _paras.ShapeType = eSectionShapeType.不对称; } if (RBtn矩形.Checked) { _paras.ShapeType = eSectionShapeType.矩形; } _paras.V3 = Convert.ToDouble(this.mTextBoxEdit蜗室平均速度.Text); for (var argument = 1; argument <= 8; argument++) { var controlname_y1 = $"skyTextBox断面y1{argument}"; var controlname_r1 = $"skyTextBox断面r1{argument}"; var controlname断面面积 = $"skyTextBox断面面积{argument}"; SkyTextBox controlY1 = this.Controls.Find(controlname_y1, true).FirstOrDefault() as SkyTextBox; SkyTextBox controlR1 = this.Controls.Find(controlname_r1, true).FirstOrDefault() as SkyTextBox; SkyTextBox control断面面积 = this.Controls.Find(controlname断面面积, true).FirstOrDefault() as SkyTextBox; if (controlY1 != null) { _paras.GaMa_Left[argument] = Convert.ToDouble(controlY1.Text); _paras.GaMa_Right[argument] = _paras.GaMa_Left[argument]; } if (controlR1 != null) { _paras.R_Left[argument] = Convert.ToDouble(controlR1.Text); _paras.R_Right[argument] = _paras.R_Left[argument]; } if (control断面面积 != null) _paras.Area[argument] = Convert.ToDouble(control断面面积.Text); } return _paras; } public bool Verify(out string error) { error = ""; bool isOk = true; if (string.IsNullOrEmpty(mTextBoxEdit蜗室平均速度.Text) || double.Parse(mTextBoxEdit蜗室平均速度.Text) == 0) { error = "请输入必填项!"; isOk = false; mTextBoxEdit蜗室平均速度.TrailingIcon = GlobalResource.GetTipTrailingIcon(); skyLabel蜗室平均速度.Visible = true; } if (string.IsNullOrEmpty(skyTextBox断面y18.Text) || double.Parse(skyTextBox断面y18.Text) == 0) { error = "请输入必填项!"; isOk = false; } if (string.IsNullOrEmpty(skyTextBox断面r18.Text) || double.Parse(skyTextBox断面r18.Text) == 0) { error = "请输入必填项!"; isOk = false; } return isOk; } public bool IsParameterChange() { if (double.Parse(mTextBoxEdit蜗室平均速度.Text) != this._paras.V3) { return true; } if (RBtn断面对称梯形.Checked && this._paras.ShapeType == eSectionShapeType.对称) { return true; } if (RBtn不对称梯形.Checked && this._paras.ShapeType == eSectionShapeType.不对称) { return true; } if (RBtn矩形.Checked && this._paras.ShapeType == eSectionShapeType.矩形) { return true; } if (double.Parse(skyTextBox断面y18.Text) != this._paras.GaMa_Left[8]) { return true; } if (double.Parse(skyTextBox断面r18.Text) != this._paras.GaMa_Right[8]) { return true; } return false; } private void BuildIcon() { //对话框前缀图片 mTextBoxEdit蜗室平均速度.LeadingIcon = GlobalResource.GetLeadingIcon(); //断面形状图片 metroTile对称梯形.BackgroundImage = GlobalResource.BuildImage("duichentixing.png", 97, 88); metroTile不对称梯形.BackgroundImage = GlobalResource.BuildImage("buduichentixing.png", 97, 88); metroTile矩形.BackgroundImage = GlobalResource.BuildImage("juxing.png", 97, 88); } private void BuildAllTips() { metroToolTip第三步提示.SetToolTip(this.metroTile对称梯形, "对称梯形"); metroToolTip第三步提示.SetToolTip(this.metroTile不对称梯形, "不对称梯形"); metroToolTip第三步提示.SetToolTip(this.metroTile矩形, "矩形"); metroToolTip第三步提示.SetToolTip(this.mTextBoxEdit蜗室平均速度, "液体在蜗室内流动\n时的平均速度"); metroToolTip第三步提示.SetToolTip(this.skyTextBox断面y18, "y1 解释"); metroToolTip第三步提示.SetToolTip(this.skyTextBox断面r18, "y2 解释"); } private void metroTile断面形状1_Click(object sender, EventArgs e) { RBtn断面对称梯形.Checked = true; RBtn不对称梯形.Checked = false; RBtn矩形.Checked = false; } private void metroTile断面形状2_Click(object sender, EventArgs e) { RBtn断面对称梯形.Checked = false; RBtn不对称梯形.Checked = true; RBtn矩形.Checked = false; } private void metroTile断面形状3_Click(object sender, EventArgs e) { RBtn断面对称梯形.Checked = false; RBtn不对称梯形.Checked = false; RBtn矩形.Checked = true; } private void mTextBoxEdit蜗室平均速度_Enter(object sender, EventArgs e) { skyLabel蜗室平均速度.Visible = false; mTextBoxEdit蜗室平均速度.TrailingIcon = null; } private void mTextBoxEdit蜗室平均速度_Leave(object sender, EventArgs e) { if (string.IsNullOrEmpty(mTextBoxEdit蜗室平均速度.Text) || double.Parse(mTextBoxEdit蜗室平均速度.Text) == 0) { mTextBoxEdit蜗室平均速度.Text = _paras.V3.ToString(); } } private void mTextBoxEdit蜗室平均速度_TextChanged(object sender, EventArgs e) { foreach (var s in mTextBoxEdit蜗室平均速度.Text) { if (!double.TryParse(mTextBoxEdit蜗室平均速度.Text, out double result) && !string.IsNullOrEmpty(mTextBoxEdit蜗室平均速度.Text)) { mTextBoxEdit蜗室平均速度.UseAccent = true; mTextBoxEdit蜗室平均速度.ShowAssistiveText = true; mTextBoxEdit蜗室平均速度.Text = ""; break; } else { mTextBoxEdit蜗室平均速度.ShowAssistiveText = false; mTextBoxEdit蜗室平均速度.UseAccent = false; } } } private void skyTextBox断面VIIIy1_TextChanged(object sender, EventArgs e) { foreach (var s in skyTextBox断面y18.Text) { if (!double.TryParse(skyTextBox断面y18.Text, out double result) && !string.IsNullOrEmpty(skyTextBox断面y18.Text)) { skyTextBox断面y18.Text = _paras.GaMa_Left[8].ToString(); break; } } } private void skyTextBox断面VIIIy2_TextChanged(object sender, EventArgs e) { foreach (var s in skyTextBox断面r18.Text) { if (!double.TryParse(skyTextBox断面r18.Text, out double result) && !string.IsNullOrEmpty(skyTextBox断面r18.Text)) { skyTextBox断面r18.Text = _paras.GaMa_Right[8].ToString(); //skyLabel提示y2.Visible = true; break; } } } private void skyTextBox断面VIIIy1_Enter(object sender, EventArgs e) { } private void skyTextBox断面VIIIy2_Enter(object sender, EventArgs e) { //skyLabely2.Visible = false; } private void mBtn计算断面面积_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(mTextBoxEdit蜗室平均速度.Text) || mTextBoxEdit蜗室平均速度.Text == "请输入蜗室平均速度") { skyLabel蜗室平均速度.Visible = true; MessageBox.Show("请先输入蜗室平均速度!"); return; } if (_paras == null) { _paras = new ViewModel.SectionBundleInfo(); } double v3 = Convert.ToDouble(mTextBoxEdit蜗室平均速度.Text); _paras.V3 = v3; _paras.CalcParaV3(this._hdrBaseInfo,this._geomBaseInfo, v3); RefrehPara(); } private void mlBtn更改断面角度_Click(object sender, EventArgs e) { if (!RBtn断面对称梯形.Checked && !RBtn不对称梯形.Checked && !RBtn矩形.Checked) { MessageBox.Show("请先选择断面类型!"); return; } if (string.IsNullOrEmpty(skyTextBox断面y18.Text) || string.IsNullOrEmpty(skyTextBox断面r18.Text)) { //skyLabel提示y2.Visible = false; //skyLabel提示y1.Visible = false; //skyLabely1.Visible = true; //skyLabely2.Visible = true; //MessageBox.Show("请先输入y1、y2!"); return; } } private void RBtn断面对称梯形_CheckedChanged(object sender) { if (RBtn断面对称梯形.Checked) { skyTextBox断面y18.Enabled = true; skyTextBox断面r18.Enabled = false; } } private void RBtn不对称梯形_CheckedChanged(object sender) { if (RBtn不对称梯形.Checked) { skyTextBox断面y18.Enabled = true; skyTextBox断面r18.Enabled = true; } } public Action OnRefreshShape = null; private void materialButton1_Click(object sender, EventArgs e) { ViewModel.SectionBundleInfo paras = GetBindingData(out string error); if (paras == null) return; if (OnRefreshShape == null) return; //paras.InitialAllParameters(this._hdrBaseInfo,this._geomBaseInfo); OnRefreshShape.Invoke(paras); } } }