/******************************************************************************* * Copyright(c) 2014 dongke All rights reserved. / Confidential * 类的信息: * 1.程序名称:dkproductionLineSearchBox.cs * 2.功能描述:生产线选择控件 * 编辑履历: * 作者 日期 版本 修改内容 * 宋扬 2014/11/18 1.00 新建 *******************************************************************************/ using System; using System.ComponentModel; using System.Data; using System.Drawing; using System.Windows.Forms; using Dongke.IBOSS.PRD.Basics.BaseControls; using Dongke.IBOSS.PRD.WCF.Proxys; using Dongke.IBOSS.PRD.Client.Controls.FormCommon; using Dongke.IBOSS.PRD.WCF.Proxys.SystemModuleService; using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.WCF.DataModels; namespace Dongke.IBOSS.PRD.Client.Controls.SearchTextBox { /// /// 生产线选择控件 /// public partial class dkproductionLineSearchBox : UserControl { #region 成员变量 private S_CMN_015 _frmProductionLine; private bool _isEnabled = true; // 控件是否可用 private DataTable _dataSource = null; // 数据源 private int? _productionLineID; // 生产线ID private string _productionLineIDS; //id集 private string _productionLineCode; // 生产线Code private string _productionLineName; // 产生产线名称 private bool _isMustInput; // 控件是否是必须输入项目 private bool _IsOnlyShowValid = true; // 是否只显示有效数据 private string _purview; //是否有权限 #endregion #region 构造函数 public dkproductionLineSearchBox() { InitializeComponent(); this.ReadOnly = true; } #endregion #region 属性 /// /// 是否只显示有效数据 /// [Description("设置控件是否只显示有效数据。")] [DefaultValue(true)] public bool IsOnlyShowValid { get { return _IsOnlyShowValid; } set { _IsOnlyShowValid = value; } } /// /// 获取或者设定控件是否是必须输入项目 /// [DefaultValue("False")] [Description("获取或者设定控件是否是必须输入项目。")] public bool IsMustInput { get { return _isMustInput; } set { _isMustInput = value; // 项目为必须输入项时,需要修改字体颜色 if (_isMustInput) { this.lblProductionLineName.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(39)))), ((int)(((byte)(39))))); } else { this.lblProductionLineName.ForeColor = System.Drawing.SystemColors.ControlText; } } } [DefaultValue("产品类别")] [Description("获取或者设定Lable标签字符。")] public string Title { get { return this.lblProductionLineName.Text; } set { this.lblProductionLineName.Text = value; AdjustControl(); } } [DefaultValue(false)] public bool IsDeleteSelf { get; set; } /// /// 获取或者设定控件的数据源。 /// [Description("获取或者设定控件的数据源。")] public DataTable DataSource { get { return _dataSource; } set { _dataSource = value; } } /// /// 获取或者设定控件的尺寸大小。 /// [Description("获取或者设定控件的尺寸大小。")] public new Size Size { get { return base.Size; } set { base.Size = value; AdjustControl(); } } /// /// 获取或者设定控件的文本框的文本字符串。 /// [Description("获取或者设定控件的文本框的文本字符串。")] public override string Text { get { return this.txtProductionLineName.Text; } set { this.txtProductionLineName.Text = value; } } /// /// 获取或者设定控件的文本框的背景颜色。 /// [Description("获取或者设定控件的文本框的背景颜色。")] public Color TxtGoodsTypeBackColor { get { return this.txtProductionLineName.BackColor; } set { this.txtProductionLineName.BackColor = value; } } /// /// 获取或者设定控件的生产线ID。 /// [Description("获取或者设定控件的生产线ID。")] public int? ProductionLineID { get { return _productionLineID; } set { _productionLineID = value; if (_productionLineID != null && _productionLineID != 0 && this.DataSource != null) { DataTable productionLineTable = this.DataSource.Copy(); DataRow[] dataRows = productionLineTable.Select("ProductionLineID = " + this._productionLineID); if (dataRows.Length == 1) { this.Text = dataRows[0]["ProductionLineCode"] as string; this.ProductionLineName = dataRows[0]["ProductionLineName"] as string; } } if (_productionLineID == null) { this.Text = string.Empty; ProductionLineCode = string.Empty; ProductionLineName = string.Empty; } } } /// /// 获取或者设定控件的生产线id集 /// [Description("获取或者设定控件的生产线id集。")] public string ProductionLineIDS { get { return _productionLineIDS; } set { _productionLineIDS = value; } } /// /// 获取或者设定控件的生产线Code /// [Description("获取或者设定控件的生产线Code。")] public string ProductionLineCode { get { return _productionLineCode; } set { _productionLineCode = value; } } /// /// 获取或者设定控件的生产线名称 /// [Description("获取或者设定控件的生产线名称。")] public string ProductionLineName { get { return _productionLineName; } set { _productionLineName = value; } } /// /// 获取或者设定控件是否可用。 /// [System.ComponentModel.DefaultValue(null)] [Description("获取或者设定控件是否可用。")] public new bool Enabled { get { return _isEnabled; } set { _isEnabled = value; this.txtProductionLineName.Enabled = _isEnabled; //this.btnSearch.Enabled = _isEnabled; this.TabStop = _isEnabled; } } /// /// 获取或者设定控件是否只读。 /// [System.ComponentModel.DefaultValue(null)] [Description("获取或者设定控件是否只读。")] public bool ReadOnly { set { this.txtProductionLineName.ReadOnly = value; } } /// /// 范围权限 /// [Description("判断是否有权限")] public string Purview { get { return _purview; } set { _purview = value; } } /// /// 查看权限属性 /// [System.ComponentModel.DefaultValue(false)] [Description("查看权限属性")] public bool Ispurview { get; set; } /// /// 范围权限 /// public byte PurviewType { get; set; } /// /// 多选。 /// [System.ComponentModel.DefaultValue(false)] [Description("多选。")] public bool SelectMore { get; set; } /// /// 是否启用权限功能 /// [System.ComponentModel.DefaultValue(true)] [Description("是否启用权限功能")] public bool IsEnablePurview { get; set; } #endregion #region 定义委托事件 public delegate void TextBoxChangedHandle(object sender, TextChangeEventArgs e); public event TextBoxChangedHandle ProductionLineValueChanged; #endregion #region 事件 [Description("控件光标点击按钮事件。")] public new event EventHandler Click { add { this.btnSearch.Click += value; } remove { this.btnSearch.Click -= value; } } /// /// 控件尺寸大小改变事件 /// /// /// private void dkproductionLineSearchBox_SizeChanged(object sender, EventArgs e) { AdjustControl(); } /// /// 清除控件的值 /// /// /// private void txtProductionLineName_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Back || e.KeyCode == Keys.Delete) { ClearControl(); } } /// /// 查询按钮按下事件 /// /// /// private void btnSearch_Click(object sender, EventArgs e) { // 如果属性是不可用,是不能进行点击事件的 if (!Enabled) { return; } // 当数据源为null时,查询数据源 if (DataSource == null) { SearchProductionLineEntity line = new SearchProductionLineEntity(); if (IsEnablePurview) { if (_purview == null) { if (this.Ispurview) { MessageBox.Show(Messages.MSG_CMN_W026, this.Text,MessageBoxButtons.OK,MessageBoxIcon.Warning,MessageBoxDefaultButton.Button1); return; } else { MessageBox.Show(Messages.MSG_CMN_W027, this.Text,MessageBoxButtons.OK,MessageBoxIcon.Warning,MessageBoxDefaultButton.Button1); return; } } line.ProcuteLineIDS = _purview; } // 查询数据源 DataSource = SystemModuleProxy.Service.GetProductionLine(line).Tables[0]; } // 释放窗体资源 if (null != _frmProductionLine) { _frmProductionLine.Dispose(); _frmProductionLine = null; } // 打开查询窗体 if (this.SelectMore) { _frmProductionLine = new S_CMN_015(1); } else { _frmProductionLine = new S_CMN_015(0); } _frmProductionLine.DataSource = this.DataSource; DialogResult dialogResult = _frmProductionLine.ShowDialog(); // 查询窗体返回值给控件赋值 if (dialogResult.Equals(DialogResult.OK)) { if (this.SelectMore) { _productionLineCode = string.Empty; _productionLineName = string.Empty; _productionLineIDS = string.Empty; if (_frmProductionLine.ProductionLineRow != null || _frmProductionLine.dataDT.Rows.Count > 0) { for (int i = 0; i < _frmProductionLine.dataDT.Rows.Count; i++) { if (_frmProductionLine.dataDT.Rows[i]["Sel"].ToString().Equals("1")) { if (string.IsNullOrEmpty(_productionLineCode)) { _productionLineCode = _frmProductionLine.dataDT.Rows[i]["ProductionLineCode"].ToString(); _productionLineName = _frmProductionLine.dataDT.Rows[i]["ProductionLineName"].ToString(); _productionLineIDS = _frmProductionLine.dataDT.Rows[i]["ProductionLineID"].ToString(); } else { _productionLineCode += "," + _frmProductionLine.dataDT.Rows[i]["ProductionLineCode"].ToString(); _productionLineName += "," + _frmProductionLine.dataDT.Rows[i]["ProductionLineName"].ToString(); _productionLineIDS += "," + _frmProductionLine.dataDT.Rows[i]["ProductionLineID"].ToString(); } } } this.Text = _productionLineName; } } else { if (_frmProductionLine.ProductionLineRow != null) { _productionLineID = Convert.ToInt32(_frmProductionLine.ProductionLineRow["ProductionLineID"]); _productionLineCode = _frmProductionLine.ProductionLineRow["ProductionLineCode"].ToString(); _productionLineName = _frmProductionLine.ProductionLineRow["ProductionLineName"].ToString(); this.Text = _frmProductionLine.ProductionLineRow["ProductionLineName"].ToString(); } } } } private void txtProductionLineName_TextChanged(object sender, EventArgs e) { if (ProductionLineValueChanged != null) { ProductionLineValueChanged(this, new TextChangeEventArgs(this.txtProductionLineName.Text)); } } public class TextChangeEventArgs : EventArgs { public TextChangeEventArgs(string message) { } } #endregion #region 私有方法 /// /// 根据控件的尺寸变化,改变控件内部控件的尺寸大小 /// protected void AdjustControl() { // 取得按钮控件的宽度和高度 int buttonWidth = (this.btnSearch.Visible) ? this.btnSearch.Width : 0; this.Height = this.btnSearch.Height; // 设置控件的尺寸和位置。 this.txtProductionLineName.Location = new System.Drawing.Point(this.lblProductionLineName.Width + ControlsConst.CONTROLSPACE, (this.Height - this.txtProductionLineName.Height) / 2); this.txtProductionLineName.Size = new System.Drawing.Size(this.Width - this.btnSearch.Width - (this.lblProductionLineName.Width + ControlsConst.CONTROLSPACE * 2), this.Height); this.btnSearch.Location = new System.Drawing.Point(this.Width - this.btnSearch.Width, (this.Height - this.btnSearch.Height) / 2); // 设置标签的尺寸和位置。 this.lblProductionLineName.Location = new System.Drawing.Point(0, (this.Height - this.lblProductionLineName.Height) / 2); this.lblProductionLineName.Size = new System.Drawing.Size(this.lblProductionLineName.Width, this.lblProductionLineName.Height); } /// /// 清空控件的值 /// /// /// public void ClearControl() { this.txtProductionLineName.Text = string.Empty; this._productionLineID = null; this._productionLineName = string.Empty; this._productionLineCode = string.Empty; this._productionLineIDS = string.Empty; } #endregion } }