using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using UAS_MES.DataOperate;
using UAS_MES.PublicMethod;
namespace UAS_MES.CustomControl.TextBoxWithIcon
{
public partial class SearchTextBox : UserControl
{
#region 构造函数
public SearchTextBox()
{
InitializeComponent();
}
#endregion
#region 变量
///
/// 是否通过Leave事件找到数据
///
public bool LeaveFindData;
///
/// DBFind窗体弹出的标题
///
private string DBTitle1;
///
/// 输入框是否可编辑
///
private bool TextBoxEnable1;
///
/// 业务逻辑的标识符
///
private string caller;
///
/// 发起DbFind的窗体
///
private string formName;
///
/// 需要赋值的字段
///
private string[] setValueField;
///
/// 初始的筛选条件
///
private string condition;
///
/// 权限标识
///
private string Power1;
///
/// 查询的表名
///
private string tableName;
///
/// 查询的字段
///
private string selectField;
public override string Text
{
get
{
return TextBox.Text;
}
set
{
TextBox.Text = value;
}
}
string AllPower1;
public string AllPower
{
get
{
return AllPower1;
}
set
{
AllPower1 = value;
}
}
public string Caller
{
get
{
return caller;
}
set
{
caller = value;
}
}
public string FormName
{
get
{
return formName;
}
set
{
formName = value;
}
}
public string[] SetValueField
{
get
{
return setValueField;
}
set
{
setValueField = value;
}
}
public string Condition
{
get
{
return condition;
}
set
{
condition = value;
}
}
public string TableName
{
get
{
return tableName;
}
set
{
tableName = value;
}
}
public string SelectField
{
get
{
return selectField;
}
set
{
selectField = value;
}
}
public string Power
{
get
{
return Power1;
}
set
{
Power1 = value;
}
}
public string DBTitle
{
get
{
return DBTitle1;
}
set
{
DBTitle1 = value;
}
}
public bool TextBoxEnable
{
get
{
return TextBoxEnable1;
}
set
{
TextBoxEnable1 = value;
}
}
#endregion
#region 自定义事件
public delegate void OnTextChange(object sender, EventArgs e);
//定义事件
public event OnTextChange UserControlTextChanged;
//定义委托
public delegate void Icon_Click(object sender, EventArgs e);
///
/// 图标点击事件
///
public event Icon_Click SearchIconClick;
public delegate void OnTextKeyDown(object sender, KeyEventArgs e);
public event OnTextKeyDown TextKeyDown;
#endregion
//定义委托
private void TextBox_TextChanged(object sender, EventArgs e)
{
UserControlTextChanged?.Invoke(sender, new EventArgs());
}
//Key先发起失去焦点事件,在执行用户自定义的事件
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
TextBox_Leave(sender, e);
TextKeyDown?.Invoke(sender, new KeyEventArgs(e.KeyCode));
}
}
private void Search_Icon_Click(object sender, EventArgs e)
{
SearchIconClick?.Invoke(sender, new EventArgs());
DbFind db = new DbFind(Name, tableName, selectField, setValueField, caller, formName, condition);
db.Text = DBTitle1;
LogManager.DoLog("DbFind查询,发起窗口【" + formName + "】,查询表【" + tableName + "】,字段" + selectField + ",条件" + condition);
if (db.IsAbleDbFind1)
{
db.ShowDialog();
}
else
{
MessageBox.Show("该字段未配置DbFind", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
private void TextBox_Enter(object sender, EventArgs e)
{
TextBox.BackColor = System.Drawing.Color.GreenYellow;
}
///
/// 重新刷新数据
///
///
///
public void RefreshDB(object sender, EventArgs e)
{
TextBox_Leave(sender, e);
}
public void TextBox_Leave(object sender, EventArgs e)
{
TextBox.BackColor = System.Drawing.Color.White;
//if (TextBox.Text != "") {
// DataHelper dh = new DataHelper();
// List fields = new List();
// //获取查询的字段
// string[] field = selectField.Replace(",", "#").Trim().Split('#');
// for (int i = 0; i < field.Length; i++)
// {
// if (i % 2 == 0)
// fields.Add(field[i]);
// }
// //将查询到的结果返回界面
// string sql = "select " + BaseUtil.AddField(fields.ToArray()) + " from " + tableName + " where " + Tag + "='" + TextBox.Text + "'";
// if (condition != null)
// {
// sql += " and " + condition;
// }
// DataTable dt = (DataTable)dh.ExecuteSql(sql, "select");
// FormCollection fmCollection = Application.OpenForms;
// if (dt.Rows.Count > 0)
// {
// for (int i = 0; i < dt.Columns.Count; i++)
// {
// for (int j = 0; j < SetValueField.Length; j++)
// {
// //利用字段的Tag属性来和列名进行比对
// object tag = fmCollection[FormName].Controls[SetValueField[j]].Tag;
// if (SetValueField[j] == dt.Columns[i].ColumnName.ToLower() || (tag != null && tag == dt.Columns[i].ColumnName.ToLower()))
// {
// fmCollection[FormName].Controls[SetValueField[j]].Text = dt.Rows[0][dt.Columns[i].ColumnName].ToString();
// }
// }
// }
// LeaveFindData = true;
// }
// else
// LeaveFindData = false;
//}
}
private void SearchTextBox_Load(object sender, EventArgs e)
{
if (!TextBoxEnable1)
TextBox.BackColor = System.Drawing.Color.White;
TextBox.Enabled = TextBoxEnable1;
}
private void SearchTextBox_SizeChanged(object sender, EventArgs e)
{
TextBox.Width = this.Width - Search_Icon.Width-3;
}
}
}