📄 fmaddressdata.cs
字号:
private TreeNode PrintRecursive(TreeNode treeNode, string AKey)
{
TreeNode selNode = null;
foreach (TreeNode node in treeNode.Nodes)
{
if (node.Name == AKey)
{
selNode = node;
break;
}
else
selNode = PrintRecursive(node, AKey);
}
return selNode;
}
/// <summary>
/// 刷新
/// </summary>
private void menuRefresh_Click(object sender, EventArgs e)
{
//刷新数据
ReLoadGroup();
}
/// <summary>
/// 计算器
/// </summary>
private void menuCalc_Click(object sender, EventArgs e)
{
//TODO: 计算器
}
/// <summary>
/// 日历
/// </summary>
private void menuCalendar_Click(object sender, EventArgs e)
{
//TODO: 日历
}
/// <summary>
/// 发送邮件
/// </summary>
private void miSendMail_Click(object sender, EventArgs e)
{
//TODO: 发送邮件
}
//注销
private void menuLogin_Click(object sender, EventArgs e)
{
fmLogin loginForm = new fmLogin();
try
{
loginForm.IsReLogin = true;
if (loginForm.ShowDialog() == DialogResult.OK)
InitForm();
}
finally
{
loginForm.Dispose();
}
}
private void dgvData_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
if (e.RowIndex == oldRowIndex) return;
int rowIndex = e.RowIndex;
Brush brush;
//光标当前行,显示红色字
if (dgvData.CurrentRow.Index == rowIndex)// & dgvData.CurrentRow.Selected
{
brush = Brushes.Red;
}
else
{
brush = Brushes.Black;
}
string sText = (rowIndex + 1).ToString();
RectangleF rect = e.RowBounds;
Font font = dgvData.Font;
SizeF sSize = e.Graphics.MeasureString(sText, font);
PointF point = new PointF((dgvData.RowHeadersWidth - sSize.Width) / 2,
rect.Top + (rect.Bottom - rect.Top - sSize.Height) / 2);
e.Graphics.DrawString(sText, dgvData.Font, brush, point);
}
private void menuLinkHelp_Click(object sender, EventArgs e)
{
Form1 form = new Form1();
try
{
form.ShowDialog();
}
finally
{
form.Dispose();
}
}
private void SetButtonEnabled(bool Enabled)
{
tbDelete.Enabled = Enabled;
tbEdit.Enabled = Enabled;
menuEditUser.Enabled = Enabled;
menuDeleteUser.Enabled = Enabled;
editFriendMenuItem.Enabled = Enabled;
delFriendMenuItem.Enabled = Enabled;
}
protected virtual void ReadFriendData(string where)
{
DBConn.CheckConnection();
const string SReadGroup =
"SELECT FItemID, FParentID, FNumber,FName,FGender,FHandset,FPhone,FPhoneHome,FBirthday,FCalendar,FHomePage,FEmail,FFax," +
" FHomeAddress,FPostalcode,FAddress,FLove,FEvery,FNote,Month(FBirthday) AS FMonth, Day(FBirthday) AS FDay " +
"FROM t_Friend {0}" +
"ORDER BY FNumber";
string sql = string.Format(SReadGroup, where);
DbDataAdapter adapter = DBConn.DBDataAdapter(sql);
//默认加入table,以便下面直接引用
if (friendDataSet.Tables.Count == 0)
friendDataSet.Tables.Add(SDataTableName);
//Table存入变量
DataTable friendTable = friendDataSet.Tables[SDataTableName];
string number = string.Empty;
if (friendTable.DefaultView.Count > 0 && null != dgvData.CurrentRow)
number = friendTable.DefaultView[dgvData.CurrentRow.Index].Row["FNumber"].ToString();
friendTable.BeginLoadData();
try
{
friendTable.Clear();
adapter.Fill(friendTable);
SetButtonEnabled(dgvData.RowCount > 0);
}
finally
{
friendTable.EndLoadData();
if (dgvData.DataSource == null) dgvData.DataSource = friendTable.DefaultView;
if (number.Length > 0)
{
//TODO: 定位旧记录位置
//friendTable.DefaultView.Sort = "FNumber";
//dgvData.SetBounds(dgvData.Rows[friendTable.DefaultView.Find(number)].
}
}
}
private void tvGroups_AfterSelect(object sender, TreeViewEventArgs e)
{
menuDeleteGroup.Enabled = false;
menuEditGroup.Enabled = false;
if (e.Node.Name.Length == 0)
return;
int itemid = Convert.ToInt32(e.Node.Name);
menuDeleteGroup.Enabled = (itemid > 0);
menuEditGroup.Enabled = (itemid > 0);
editGroupMenuItem.Enabled = (itemid > 0);
deleteGroupMenuItem.Enabled = (itemid > 0);
string sqlWhere = (itemid > 0) ? string.Format("WHERE FParentID={0} ", itemid) : string.Empty;
ReadFriendData(sqlWhere);
}
private void toolStripComboBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
tbSearch_Click(tbSearch, null);
}
/// <summary>
/// 过滤数据
/// </summary>
/// <param name="filter">条件表达式</param>
private void SetDatasetFilter(string filter)
{
DataTable friendTable = friendDataSet.Tables[SDataTableName];
if (friendTable.Rows.Count == 0)
return;
friendTable.BeginLoadData();
try
{
friendTable.DefaultView.RowFilter = filter;
}
finally
{
friendTable.EndLoadData();
}
}
private void tbSearch_Click(object sender, EventArgs e)
{
/*DataRow[] dataRows = friendTable.Select(string.Format("FNumber = '{0}' OR FName = '{0}'", tscSearch.Text), "FNumber");
if (dataRows.GetLength(0) == 0)
MessageBox.Show("Not Founded");
else
{
MessageBox.Show("Founded");
}
* */
const string SFilter = "FNumber like '%{0}%' OR FName like '%{0}%'";
string searchText = tscSearch.Text.Trim();
string filterString = (searchText.Length == 0) ? string.Empty : string.Format(SFilter, searchText.Replace("'", "\''"));
SetDatasetFilter(filterString);
if (searchText.Length > 0 && tscSearch.Items.IndexOf(searchText.Trim()) < 0)
tscSearch.Items.Add(searchText.Trim());
birtyDayMenuItem.Checked = false;
}
[FlagsAttribute()]
public enum ExportType {etExcel = 1, etXML = 2};
/// <SUMMARY>
/// 导出数据
/// </SUMMARY>
private void tbExport_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
try
{
saveFileDialog.DefaultExt = "XLS";
saveFileDialog.Filter = "EXCEL|*.XLS|XML|*.XML";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
FileInfo fileInfo = new FileInfo(saveFileDialog.FileName);
if (!Directory.Exists(fileInfo.DirectoryName))
throw new DirectoryNotFoundException();
exportFileName = saveFileDialog.FileName;
switch (saveFileDialog.FilterIndex)
{
case 1:
case 2:
ExportToFile((ExportType)saveFileDialog.FilterIndex);
break;
}
}
}
finally
{
saveFileDialog.Dispose();
}
}
/// <summary>
/// 导出的文件名称
/// </summary>
private string exportFileName;
/// <summary>
/// 创建一线程导出文件
/// </summary>
/// <param name="exportType">导出的文件类型Excel、XML</param>
private void ExportToFile(ExportType exportType)
{
const string UnSelectFileName = "没有选择导出文件名。";
if (exportFileName.Length == 0) throw new Exception(UnSelectFileName);
Thread thread = null;
switch (exportType)
{
case ExportType.etExcel:
thread = new Thread(new ThreadStart(DoExportExcel));
break;
case ExportType.etXML:
thread = new Thread(new ThreadStart(DoExportXML));
break;
}
if (thread != null) thread.Start();
}
/// <summary>
/// 导出文件到Excel
/// </summary>
private void DoExportExcel()
{
ClientFuncion.ExportExcel(dgvData, exportFileName);
}
/// <summary>
/// 导出文件到XML
/// </summary>
private void DoExportXML()
{
friendDataSet.Tables[SDataTableName].WriteXml(exportFileName);
}
private void dgvData_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex > 0 && e.RowIndex >= 0)
tbEdit_Click(null, null);
}
private void dgvData_SelectionChanged(object sender, EventArgs e)
{
SetButtonEnabled(dgvData.RowCount > 0);
}
/// <summary>
/// 设置Grid行的背景色
/// </summary>
/// <param name="e"></param>
private void SetRowBackColor(DataGridViewCellFormattingEventArgs e)
{
if (null == e) return;
//如果生日没填则不处理
if (e.ColumnIndex != ColumnBirthday.Index || e.Value.ToString().Length < 4)
return;
DateTime date = (DateTime)e.Value;
//是否农历
object calendar = dgvData[ColumnCalendar.Index, e.RowIndex].Value;
bool isCNDate = (null != calendar) ? (bool)calendar : false;
bool isShowCNDay = false;
bool isShowDay = false;
//生日是农历
if (isCNDate)
{
DateTime cnDate = lunarHolDate;
int icnMonth = cnDate.Month, icnDay = cnDate.Day;
int icnDays = date.Day - icnDay;
isShowCNDay = (date.Month == icnMonth && icnDays >= 0 && icnDays <= 7);
}
else
{
int iMonth = date.Month, iDay = date.Day;
int iDays = date.Day - DateTime.Today.Day;
isShowDay = (iMonth == DateTime.Today.Month && iDays >= 0 && iDays <= 7);
}
DataGridViewRow row = dgvData.Rows[e.RowIndex];
//生日在7天之内,则将该行背景色换成黄色
row.DefaultCellStyle.BackColor = (isShowCNDay || isShowDay) ? Color.FromName("Info") : Color.White;
}
private void dgvData_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
SetRowBackColor(e);
}
/// <summary>
/// 过滤出最近7天过生日的联系人
/// </summary>
private void FilterBirthday()
{
string sFilter = string.Empty;
if (!birtyDayMenuItem.Checked)
{
const string sFilterString = "(FCalendar = {0} AND FMonth ={1} AND FDay >= {2} AND FDay <= {3})";
const string sNullBirthday = "(ISNULL(FBirthday, #{0}#) <> #{0}#) AND ";
sFilter = string.Format(sNullBirthday, DateTime.MinValue.Date) +
string.Format(sFilterString, "False", DateTime.Today.Month, DateTime.Today.Day, DateTime.Today.Day + 7) + " OR " +
string.Format(sFilterString, "True", lunarHolDate.Month, lunarHolDate.Day, lunarHolDate.Day + 7);
}
SetDatasetFilter(sFilter);
birtyDayMenuItem.Checked = !birtyDayMenuItem.Checked;
}
private void birtyDayMenuItem_Click(object sender, EventArgs e)
{
FilterBirthday();
}
private void timerTrack_Tick(object sender, EventArgs e)
{
if (DateTime.Today != loginDate)
{
ReSetDate();
notifyIcon.ShowBalloonTip(3000, ClientFuncion.AssemblyTitle, "系统日期被修改为:" + loginDate.ToLongDateString(), ToolTipIcon.Info);
}
}
private void OpenPreViewForm(bool isPrint)
{
fmPreview preview = new fmPreview("FriendsReport.rpt", friendDataSet);
try
{
if (isPrint)
preview.PrintReport();
else
preview.ShowDialog();
}
finally
{
preview.Dispose();
}
}
/// <summary>
/// 打印预览
/// </summary>
private void tbPreview_Click(object sender, EventArgs e)
{
OpenPreViewForm(false);
}
/// <summary>
/// 打印
/// </summary>
private void tbPrint_Click(object sender, EventArgs e)
{
OpenPreViewForm(true);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -