/// <summary> /// 切换当前信区 /// </summary> /// <param name="iIndex"></param> private void ChangeCurrentAreaTo(int iIndex) { if (this.iCurrentArea == iIndex) { return; } if (this.lvArea.Items.Count <= iIndex) { return; } if (this.lvArea.Items[iIndex].Tag == null) { return; } // 更新查找书签 this.iFindRecord = 0; this.iFindArea = iIndex; this.iCurrentArea = iIndex; // 滚动LIST this.lvArea.SelectedItems.Clear(); this.lvArea.Items[iIndex].Selected = true; this.lvArea.EnsureVisible(this.iCurrentArea); this.Cursor = Cursors.WaitCursor; this.lvMail.Items.Clear(); MailArea m = (MailArea)this.lvArea.Items[iIndex].Tag; this.arCurrentMails = m.LoadMails(); if (this.arCurrentMails == null || this.arCurrentMails.Length == 0) { ListViewItem lvi = this.lvMail.Items.Add("空信区"); this.Cursor = Cursors.Default; return; } for (int i = 0; i < this.arCurrentMails.Length; i++) { JamMail jm = this.arCurrentMails[i]; ListViewItem lvi = this.lvMail.Items.Add(jm.sFrom); lvi.SubItems.Add(jm.sTo); lvi.SubItems.Add(jm.sSubject); lvi.SubItems.Add(jm.uSize.ToString("#,0")); lvi.SubItems.Add(jm.dtSendTime.ToString()); lvi.SubItems.Add(jm.dtReciveTime.ToString()); lvi.Tag = jm; } this.Cursor = Cursors.Default; }
private void mnFindNext_Click(object sender, System.EventArgs e) { string sFindText = this.frmFind.txtFindText.Text; if (this.frmFind.chkNoCase.Checked) { sFindText = sFindText.ToLower(); } bool bFound = false; int i = 0, j; int iEndArea = this.frmFind.chkAllArea.Checked ? this.lvArea.Items.Count - 1: this.iFindArea; for (j = this.iFindArea; j < iEndArea; j++) { MailArea m = (MailArea)this.lvArea.Items[j].Tag; JamMail [] jms; // 如果是当前信区,那么不需要再读文件了. if (this.iCurrentArea != j) { jms = m.LoadMails(); } else { jms = this.arCurrentMails; } if (jms == null) { continue; } #region look up a mail in a area for (i = this.iFindRecord; i < jms.Length; i++) { JamMail jm = (JamMail)jms[i]; bFound = jm.FindText( this.frmFind.txtFindText.Text, this.frmFind.chkFrom.Checked, this.frmFind.chkTo.Checked, this.frmFind.chkSubject.Checked, this.frmFind.chkContent.Checked, this.frmFind.chkNoCase.Checked, false ); if (bFound) { // 找到了. break; } } if (bFound) { break; } else { // 从下个区的开始找. this.iFindRecord = 0; } #endregion } if (!bFound) { MessageBox.Show("没有了."); return; } // 要切换到找到的信区和信里. if (j != this.iCurrentArea) { //不是当前区,要切换到J信区里 this.ChangeCurrentAreaTo(j); } this.lvMail.SelectedItems.Clear(); this.lvMail.Items[i].Selected = true; this.ShowCurrentMail(); this.lvMail.Items[i].EnsureVisible(); this.txtContent.Focus(); }