⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fmaddressdata.cs

📁 一个通讯录源码,用C#写的.挺不错的,大家可以参考看一下.
💻 CS
📖 第 1 页 / 共 2 页
字号:
        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 + -