You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
4.9 KiB
C#
152 lines
4.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Mesnac.Basic.Service
|
|
{
|
|
/// <summary>
|
|
/// 事件处理器
|
|
/// </summary>
|
|
public class EventHandlerProcessor
|
|
{
|
|
#region 字段定义
|
|
|
|
private object _oldValue; //保存事件源原始值
|
|
|
|
#endregion
|
|
|
|
#region 构造方法
|
|
|
|
/// <summary>
|
|
/// 构造方法
|
|
/// </summary>
|
|
/// <param name="oldValue">传递事件源原始值</param>
|
|
public EventHandlerProcessor(object oldValue)
|
|
{
|
|
this._oldValue = oldValue;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 事件处理
|
|
|
|
#region 文本框事件处理
|
|
|
|
/// <summary>
|
|
/// 文本框事件处理
|
|
/// </summary>
|
|
/// <param name="sender">事件源</param>
|
|
/// <param name="e">事件参数</param>
|
|
public void TextBox_LostFocus(object sender, EventArgs e)
|
|
{
|
|
TextBox textBox = sender as TextBox;
|
|
string oldStr = String.IsNullOrEmpty(this._oldValue as string) ? String.Empty : this._oldValue.ToString();
|
|
if (textBox.Text.Equals(oldStr))
|
|
{
|
|
return;
|
|
}
|
|
OperationCommand cmd = new OperationCommand(textBox, textBox.Text, oldStr, this.TextBox_LostFocus);
|
|
UndoRedoService.UndoStack.Push(cmd);
|
|
this._oldValue = textBox.Text;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 复选框事件处理
|
|
|
|
/// <summary>
|
|
/// 复选框事件处理
|
|
/// </summary>
|
|
/// <param name="sender">事件源</param>
|
|
/// <param name="e">事件参数</param>
|
|
public void CheckBox_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
CheckBox checkBox = sender as CheckBox;
|
|
bool oldValue = false;
|
|
if (this._oldValue != null)
|
|
{
|
|
bool.TryParse(this._oldValue.ToString(), out oldValue);
|
|
}
|
|
if (checkBox.Checked == oldValue)
|
|
{
|
|
return;
|
|
}
|
|
OperationCommand cmd = new OperationCommand(checkBox, checkBox.Checked, oldValue, this.CheckBox_CheckedChanged);
|
|
UndoRedoService.UndoStack.Push(cmd);
|
|
this._oldValue = checkBox.Checked;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 组合框事件处理
|
|
|
|
/// <summary>
|
|
/// 组合框事件处理
|
|
/// </summary>
|
|
/// <param name="sender">事件源</param>
|
|
/// <param name="e">事件参数</param>
|
|
public void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
ComboBox comboBox = sender as ComboBox;
|
|
if (comboBox.SelectedItem == this._oldValue)
|
|
{
|
|
return;
|
|
}
|
|
OperationCommand cmd = new OperationCommand(comboBox, comboBox.SelectedItem, this._oldValue, this.ComboBox_SelectedIndexChanged);
|
|
UndoRedoService.UndoStack.Push(cmd);
|
|
this._oldValue = comboBox.SelectedItem;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 日历事件处理
|
|
|
|
/// <summary>
|
|
/// 日历控件事件处理
|
|
/// </summary>
|
|
/// <param name="sender">事件源</param>
|
|
/// <param name="e">事件参数</param>
|
|
public void DateTimePicker_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
DateTimePicker dateTimePicker = sender as DateTimePicker;
|
|
DateTime oldValue = DateTime.Now;
|
|
if (this._oldValue != null)
|
|
{
|
|
DateTime.TryParse(this._oldValue.ToString(), out oldValue);
|
|
}
|
|
if (String.Format("{0:yyyyMMddHHmmss}", dateTimePicker.Value).Equals(String.Format("{0:yyyyMMddHHmmss}", oldValue)))
|
|
{
|
|
return;
|
|
}
|
|
OperationCommand cmd = new OperationCommand(dateTimePicker, dateTimePicker.Value, this._oldValue, this.DateTimePicker_ValueChanged);
|
|
UndoRedoService.UndoStack.Push(cmd);
|
|
this._oldValue = dateTimePicker.Value;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region DataGridView事件处理
|
|
|
|
/// <summary>
|
|
/// DataGridView事件处理
|
|
/// </summary>
|
|
/// <param name="sender">事件源</param>
|
|
/// <param name="e">事件参数</param>
|
|
public void DataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
DataGridView dataGridView = sender as DataGridView;
|
|
DataTable dtNew = Mesnac.Basic.DataProcessor.GetDataTableFromGridView(dataGridView);
|
|
OperationCommand cmd = new OperationCommand(dataGridView, dtNew, this._oldValue, this.DataGridView_CellValueChanged, e.RowIndex, e.ColumnIndex);
|
|
UndoRedoService.UndoStack.Push(cmd);
|
|
this._oldValue = Mesnac.Basic.DataProcessor.GetDataTableFromGridView(dataGridView);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
}
|
|
}
|