using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Windows.Forms; using DevComponents.DotNetBar; using DevComponents.DotNetBar.Controls; using DXFLibrary; using GeoScene.Globe; namespace Cyberpipe { public partial class FrmDiameterQuery : Office2007Form { GSOGlobeControl globeControl1; List<string> layerNames = new List<string>(); int value; static FrmDiameterQuery frm; // DataTable table = new DataTable(); // string strLable = ""; private MainFrm.DataGridViewDelegate m_InitDataGridViewX1; private MainFrm.PageControlStuct _pageControl; public static void ShowForm(GSOGlobeControl _ctl, List<string> _list, MainFrm.DataGridViewDelegate InitDataGridViewX1, MainFrm.PageControlStuct pageControl) { if (frm == null) { frm = new FrmDiameterQuery(_ctl, _list, InitDataGridViewX1,pageControl); frm.Show(_ctl.Parent); } else { if (frm.WindowState == FormWindowState.Minimized) { frm.WindowState = FormWindowState.Normal; } } } public FrmDiameterQuery(GSOGlobeControl _ctl, List<string> _list, MainFrm.DataGridViewDelegate InitDataGridViewX1, MainFrm.PageControlStuct pageControl) { InitializeComponent(); globeControl1 = _ctl; layerNames = _list; m_InitDataGridViewX1 = InitDataGridViewX1; _pageControl = pageControl; } /// <summary> /// 窗体初始化事件处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FrmDiameterSel_Load(object sender, EventArgs e) { comboBoxEx1.Items.Clear(); List<string> tempString = new List<string>(); for (int i = 0; i < globeControl1.Globe.Layers.Count; i++)//获取树节点后中所有的layer图层 { GSOLayer layer = globeControl1.Globe.Layers[i]; if (layer != null && layer.Dataset != null && layer.Dataset.IsFeatureDataset) { string name = layer.Name; if (layer.Type == EnumLayerType.FeatureLayer && !name.Contains("\\") && !name.Contains("施工")) { if (name.EndsWith("管线") && name != "供电管线" && name != "电信管线") // 消防、污水、供电、给水、电信、雨水,供电和电信表没有“管径”列 { //comboBoxEx1.Items.Add(name); tempString.Add(name); } } } } tempString.Distinct().ToList().ForEach(s => comboBoxEx1.Items.Add(s)); value = comboBoxEx2.Location.X - textBoxX2.Location.X; textBoxX2.Visible = false; textBoxX2.Text = ""; labelX4.Visible = false; if (!isBetween) { textBoxX1.Location = new Point(textBoxX1.Location.X - value, textBoxX1.Location.Y); labelX3.Location = new Point(labelX3.Location.X - value, textBoxX1.Location.Y); comboBoxEx2.Location = new Point(comboBoxEx2.Location.X - value, comboBoxEx2.Location.Y); isBetween = true; } comboBoxEx2.Items.Clear(); comboBoxEx2.Items.Add(">"); comboBoxEx2.Items.Add("<"); comboBoxEx2.Items.Add("="); comboBoxEx2.Items.Add("区间"); } /// <summary> /// 键盘按键按下事件处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void textBoxX1_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8) { e.Handled = true;//屏蔽 } } bool isBetween; /// <summary> /// 下拉框选中项改变事件处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void comboBoxEx2_SelectedIndexChanged(object sender, EventArgs e) { if (comboBoxEx2.SelectedIndex == 3) { textBoxX2.Visible = true; labelX4.Visible = true; if (isBetween) { textBoxX1.Location = new Point(textBoxX1.Location.X + value, textBoxX1.Location.Y); labelX3.Location = new Point(labelX3.Location.X + value, textBoxX1.Location.Y); comboBoxEx2.Location = new Point(comboBoxEx2.Location.X + value, comboBoxEx2.Location.Y); isBetween = false; } } else { textBoxX2.Visible = false; textBoxX2.Text = ""; labelX4.Visible = false; if (!isBetween) { textBoxX1.Location = new Point(textBoxX1.Location.X - value, textBoxX1.Location.Y); labelX3.Location = new Point(labelX3.Location.X - value, textBoxX1.Location.Y); comboBoxEx2.Location = new Point(comboBoxEx2.Location.X - value, comboBoxEx2.Location.Y); isBetween = true; } } } /// <summary> /// 确定按钮事件处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonX1_Click(object sender, EventArgs e) { if (comboBoxEx1.SelectedIndex == -1) { MessageBox.Show("请选择管线图层!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information); return; } GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(comboBoxEx1.Text.Trim()); if (layer == null || textBoxX1.Text == "" || (textBoxX2.Visible && textBoxX2.Text == "")) { MessageBox.Show("请输入管径范围!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (textBoxX2.Visible && textBoxX2.Text != "") { try { if (Convert.ToInt32(textBoxX2.Text) > Convert.ToInt32(textBoxX1.Text)) { MessageBox.Show("管径范围最小值大于最大值,请重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } catch (Exception ex) { //LogError.PublishError(ex); LogHelper.Error(ex.Message); MessageBox.Show("请输入正确的管径范围!"); return; } } string mathT = comboBoxEx2.SelectedItem.ToString(); PaginationUtil.ResetPagination(); int total = PaginationUtil.CountSql(comboBoxEx1.Text, "管径",mathT, textBoxX2.Text, textBoxX1.Text); if (total > 0) { string strLable = comboBoxEx1.Text + "共有:" + total + "条"; string sql = PaginationUtil.GetQuerySql(globeControl1, comboBoxEx1.Text, "管径",mathT, textBoxX2.Text, textBoxX1.Text); PaginationUtil pagination = PaginationUtil.InitPagination(sql, total, _pageControl, m_InitDataGridViewX1, strLable, comboBoxEx1.Text); pagination.FillDataGridView(); } else { m_InitDataGridViewX1(null, "", "", false); MessageBox.Show("没有查到符合条件的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } /// <summary> /// 取消按钮事件处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonX3_Click(object sender, EventArgs e) { Close(); } /// <summary> /// 窗体关闭事件处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FrmDiameterQuery_FormClosing(object sender, FormClosingEventArgs e) { m_InitDataGridViewX1(null, "", "", false); frm = null; } } }