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);
}
}
}