From ba5d921eed085f7e36ae20d2049691d2e99c7351 Mon Sep 17 00:00:00 2001 From: paopaofeng Date: Mon, 9 Jul 2018 14:33:04 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=88=B0=20dp2Library?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../DataStructure.cs | 30 ++ .../DigitalPlatform.LibraryRestClient.csproj | 4 + .../LibraryChannel.cs | 274 ++++++++++++++++++ dp2Mini/Control/PrintCardDocument.cs | 94 +++--- dp2Mini/PrepForm.Designer.cs | 52 ++-- dp2Mini/PrepForm.cs | 166 +++++++---- dp2Mini/PrepForm.resx | 183 ------------ 8 files changed, 480 insertions(+), 324 deletions(-) diff --git a/.gitignore b/.gitignore index 9e2a8d53..35577f37 100644 --- a/.gitignore +++ b/.gitignore @@ -195,3 +195,4 @@ ChordInstaller/*.zip ChordInstaller/*_app/ .vs/ *.nupkg +/dp2Mini/PrintPage.txt diff --git a/DigitalPlatform.LibraryRestClient/DataStructure.cs b/DigitalPlatform.LibraryRestClient/DataStructure.cs index 230d9264..4c6723b1 100644 --- a/DigitalPlatform.LibraryRestClient/DataStructure.cs +++ b/DigitalPlatform.LibraryRestClient/DataStructure.cs @@ -411,6 +411,36 @@ public class WriteResResponse [DataMember] public byte[] baOutputTimestamp { get; set; } } + + [DataContract] + public class GetResRequest + { + [DataMember] + public string strResPath { get; set; } + [DataMember] + public long nStart { get; set; } + [DataMember] + public int nLength { get; set; } + [DataMember] + public string strStyle { get; set; } + } + + [DataContract] + public class GetResResponse + { + [DataMember] + public LibraryServerResult GetResResult { get; set; } + + [DataMember] + public byte[] baContent { get; set; } + [DataMember] + public string strMetadata { get; set; } + [DataMember] + public string strOutputResPath { get; set; } + [DataMember] + public byte[] baOutputTimestamp { get; set; } + } + // GetSearchResult() [DataContract] public class GetSearchResultRequest diff --git a/DigitalPlatform.LibraryRestClient/DigitalPlatform.LibraryRestClient.csproj b/DigitalPlatform.LibraryRestClient/DigitalPlatform.LibraryRestClient.csproj index 4f7ab41f..073e3508 100644 --- a/DigitalPlatform.LibraryRestClient/DigitalPlatform.LibraryRestClient.csproj +++ b/DigitalPlatform.LibraryRestClient/DigitalPlatform.LibraryRestClient.csproj @@ -52,6 +52,10 @@ + + {56eb94fd-45d0-4c82-ae8e-d398f1c4efcf} + DigitalPlatform.Base + {26f96cc3-a4a9-4bc4-a10a-bc7e25581ff6} DigitalPlatform.Text diff --git a/DigitalPlatform.LibraryRestClient/LibraryChannel.cs b/DigitalPlatform.LibraryRestClient/LibraryChannel.cs index 1996d593..ce6678bc 100644 --- a/DigitalPlatform.LibraryRestClient/LibraryChannel.cs +++ b/DigitalPlatform.LibraryRestClient/LibraryChannel.cs @@ -44,6 +44,11 @@ public class LibraryChannel /// public event BeforeLoginEventHandle BeforeLogin; + /// + /// 空闲事件 + /// + public event IdleEventHandler Idle = null; + // 重登录次数 int _loginCount = 0; @@ -1468,7 +1473,249 @@ public SearchResponse Search(string queryXml, } + public WriteResResponse WriteRes( + string strResPath, + string strRanges, + long lTotalLength, + byte[] baContent, + string strMetadata, + string strStyle, + byte[] baInputTimestamp) + { + REDO: + CookieAwareWebClient client = new CookieAwareWebClient(this.Cookies); + client.Headers["Content-type"] = "application/json; charset=utf-8"; + + WriteResRequest request = new WriteResRequest() + { + strResPath = strResPath, + strRanges = strRanges, + lTotalLength = lTotalLength, + baContent = baContent, + strMetadata = strMetadata, + strStyle = strStyle, + baInputTimestamp = baInputTimestamp + }; + + byte[] baData = Encoding.UTF8.GetBytes(Serialize(request)); + byte[] result = client.UploadData(GetRestfulApiUrl("WriteRes"), + "POST", + baData); + + string strResult = Encoding.UTF8.GetString(result); + WriteResResponse response = Deserialize(strResult); + if (response.WriteResResult.Value == -1 + && response.WriteResResult.ErrorCode == ErrorCode.NotLogin) + { + string strError = ""; + if (DoNotLogin(ref strError) == 1) + goto REDO; + } + + return response; + } + + public long WriteRes( + string strPath, + string strXml, + bool bInlucdePreamble, + string strStyle, + byte[] timestamp, + out byte[] baOutputTimestamp, + out string strOutputPath, + out string strError) + { + strError = ""; + strOutputPath = ""; + baOutputTimestamp = null; + + int nChunkMaxLength = 4096; // chunk + + int nStart = 0; + + byte[] baInputTimeStamp = null; + byte[] baPreamble = Encoding.UTF8.GetPreamble(); + + byte[] baTotal = Encoding.UTF8.GetBytes(strXml); + + if (bInlucdePreamble == true + && baPreamble != null && baPreamble.Length > 0) + { + byte[] temp = null; + temp = ByteArray.Add(temp, baPreamble); + baTotal = ByteArray.Add(temp, baTotal); + } + + int nTotalLength = baTotal.Length; + + if (timestamp != null) + { + baInputTimeStamp = ByteArray.Add(baInputTimeStamp, timestamp); + } + + while (true) + { + DoIdle(); + + int nThisChunkSize = nChunkMaxLength; + + if (nThisChunkSize + nStart > nTotalLength) + { + nThisChunkSize = nTotalLength - nStart; // 最后一次 + if (nThisChunkSize <= 0) + break; + } + + byte[] baChunk = new byte[nThisChunkSize]; + Array.Copy(baTotal, nStart, baChunk, 0, baChunk.Length); + + string strMetadata = ""; + string strRange = Convert.ToString(nStart) + "-" + Convert.ToString(nStart + baChunk.Length - 1); + + WriteResResponse response = WriteRes(strPath, + strRange, + nTotalLength, + baChunk, + strMetadata, + strStyle, + baInputTimeStamp); + if (response.WriteResResult.Value == -1) + { + strError = response.WriteResResult.ErrorInfo; + return -1; + } + + baOutputTimestamp = response.baOutputTimestamp; + strOutputPath = response.strOutputResPath; + + nStart += baChunk.Length; + + if (nStart >= nTotalLength) + break; + + Debug.Assert(strOutputPath != "", "outputpath不能为空"); + + strPath = strOutputPath; // 如果第一次的strPath中包含'?'id, 必须用outputpath才能正确继续 + baInputTimeStamp = baOutputTimestamp; //baOutputTimeStamp; + } + + return 0; + } + + + public GetResResponse GetRes( + string strResPath, + long lStart, + int nLength, + string strStyle) + { + REDO: + CookieAwareWebClient client = new CookieAwareWebClient(this.Cookies); + client.Headers["Content-type"] = "application/json; charset=utf-8"; + + GetResRequest request = new GetResRequest() + { + strResPath = strResPath, + nStart = lStart, + nLength = nLength, + strStyle = strStyle + }; + byte[] baData = Encoding.UTF8.GetBytes(Serialize(request)); + byte[] result = client.UploadData(GetRestfulApiUrl("GetRes"), + "POST", + baData); + + string strResult = Encoding.UTF8.GetString(result); + GetResResponse response = Deserialize(strResult); + if (response.GetResResult.Value == -1 + && response.GetResResult.ErrorCode == ErrorCode.NotLogin) + { + string strError = ""; + if (DoNotLogin(ref strError) == 1) + goto REDO; + } + + return response; + } + + /// + /// + /// + /// + /// 一般设置为"content,data,metadata,timestamp,outputpath" + /// + /// + /// + /// + /// + /// + public long GetRes( + string strPath, + string strStyle, + out string strResult, + out string strMetaData, + out byte[] baOutputTimeStamp, + out string strOutputResPath, + out string strError) + { + strMetaData = ""; + strResult = ""; + strError = ""; + strOutputResPath = ""; + baOutputTimeStamp = null; + + byte[] baContent = null; + + int nStart = 0; + int nPerLength = -1; + + byte[] baTotal = null; + + while(true) + { + DoIdle(); + + GetResResponse response = GetRes(strPath, + nStart, + nPerLength, + strStyle); + + long lRet = response.GetResResult.Value; + if (lRet == -1) + { + strError = response.GetResResult.ErrorInfo; + return -1; + } + + strMetaData = response.strMetadata; + strOutputResPath = response.strOutputResPath; + baOutputTimeStamp = response.baOutputTimestamp; + baContent = response.baContent; + + if (StringUtil.IsInList("data", strStyle) != true) + break; + + if (StringUtil.IsInList("content", strStyle) == false) + return lRet; + + baTotal = ByteArray.Add(baTotal, baContent); + + Debug.Assert(baContent != null, ""); + Debug.Assert(baContent.Length <= (int)lRet, "每次返回的包尺寸[" + Convert.ToString(baContent.Length) + "]应当小于result.Value[" + Convert.ToString(lRet) + "]"); + + nStart += baContent.Length; + if (nStart >= (int)lRet) + break; // 结束 + } + + if (StringUtil.IsInList("data", strStyle) != true) + return 0; + + strResult = ByteArray.ToString(baTotal); + + return 0; + } public void Close() { @@ -1523,6 +1770,19 @@ public void AbortIt() #region 公共函数 + void DoIdle() + { + System.Threading.Thread.Sleep(1); // 避免CPU资源过度耗费 + + // bool bDoEvents = true; + if (this.Idle != null) + { + IdleEventArgs e = new IdleEventArgs(); + this.Idle(this, e); + // bDoEvents = e.bDoEvents; + } + System.Threading.Thread.Sleep(1); // 避免CPU资源过度耗费 + } /// /// 拼出接口url地址 /// @@ -1750,6 +2010,20 @@ public class BeforeLoginEventArgs : EventArgs public LoginFailCondition LoginFailCondition = LoginFailCondition.NormalError; } + /// + /// 空闲事件 + /// + /// 发送者 + /// 事件参数 + public delegate void IdleEventHandler(object sender, + IdleEventArgs e); + /// + /// 空闲事件的参数 + /// + public class IdleEventArgs : EventArgs + { + // public bool bDoEvents = true; + } } diff --git a/dp2Mini/Control/PrintCardDocument.cs b/dp2Mini/Control/PrintCardDocument.cs index e6bf5ab7..55c3d47e 100644 --- a/dp2Mini/Control/PrintCardDocument.cs +++ b/dp2Mini/Control/PrintCardDocument.cs @@ -136,12 +136,10 @@ public int GetOneDocument( if (bRet == false) return 1; // 结束 - } strXml = m_reader.ReadOuterXml(); - return 0; } catch (Exception ex) @@ -603,13 +601,13 @@ int DoPrintPage(Graphics g, } static void DrawFourAngel( - Graphics g, - Pen pen, - float x, - float y, - float w, - float h, - float line_length) + Graphics g, + Pen pen, + float x, + float y, + float w, + float h, + float line_length) { // *** 左上 @@ -841,16 +839,16 @@ int DoHeader( strHeaderCondition += ",tailpage"; int nRet = DoColumns(g, - nodeHeader, - x, - y, - width, - height, - true, - macro_table, - strHeaderCondition, - ref temp_pages, - out strError); + nodeHeader, + x, + y, + width, + height, + true, + macro_table, + strHeaderCondition, + ref temp_pages, + out strError); if (nRet == -1) return -1; } @@ -900,16 +898,16 @@ int DoFooter(Graphics g, strHeaderCondition += ",tailpage"; int nRet = DoColumns(g, - nodeHeader, - x, - y, - width, - height, - true, - macro_table, - strHeaderCondition, - ref temp_pages, - out strError); + nodeHeader, + x, + y, + width, + height, + true, + macro_table, + strHeaderCondition, + ref temp_pages, + out strError); if (nRet == -1) return -1; } @@ -1025,13 +1023,13 @@ int DoColumns( { string strStyle = DomUtil.GetAttr(node, "style"); if (StringUtil.IsInList("hidewhenonepage", strStyle) == true - && StringUtil.IsInList("onlyonepage", strHeaderCondition) == true) + && StringUtil.IsInList("onlyonepage", strHeaderCondition) == true) continue; if (StringUtil.IsInList("hidewhenfirstpage", strStyle) == true -&& StringUtil.IsInList("firstpage", strHeaderCondition) == true) + && StringUtil.IsInList("firstpage", strHeaderCondition) == true) continue; if (StringUtil.IsInList("hidewhentailpage", strStyle) == true -&& StringUtil.IsInList("tailpage", strHeaderCondition) == true) + && StringUtil.IsInList("tailpage", strHeaderCondition) == true) continue; } @@ -1167,8 +1165,8 @@ int DoRect( nodeContainer, macro_table, rect_group, - ref lines, - out strError); + ref lines, + out strError); if (nRet == -1) return -1; @@ -1323,13 +1321,13 @@ int Process( try { nRet = BuildLines(g, - rect_def, - "\r\n", - font, - color, - format, - ref lines, - out strError); + rect_def, + "\r\n", + font, + color, + format, + ref lines, + out strError); if (nRet == -1) return -1; } @@ -1365,13 +1363,13 @@ int Process( { nRet = BuildLines(g, - rect_def, - null, - font, - color, - format, - ref lines, - out strError); + rect_def, + null, + font, + color, + format, + ref lines, + out strError); if (nRet == -1) return -1; diff --git a/dp2Mini/PrepForm.Designer.cs b/dp2Mini/PrepForm.Designer.cs index 3c82b617..15323923 100644 --- a/dp2Mini/PrepForm.Designer.cs +++ b/dp2Mini/PrepForm.Designer.cs @@ -29,7 +29,6 @@ protected override void Dispose(bool disposing) private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PrepForm)); this.splitContainer_prep = new System.Windows.Forms.SplitContainer(); this.button_search = new System.Windows.Forms.Button(); this.textBox_queryWord = new System.Windows.Forms.TextBox(); @@ -52,9 +51,7 @@ private void InitializeComponent() this.toolStripMenuItem_printPreview = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem_export = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem_remove = new System.Windows.Forms.ToolStripMenuItem(); - this.printDialog_prep = new System.Windows.Forms.PrintDialog(); - this.printDocument_prep = new System.Drawing.Printing.PrintDocument(); - this.printPreviewDialog_prep = new System.Windows.Forms.PrintPreviewDialog(); + this.toolStripMenuItem_change = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer_prep)).BeginInit(); this.splitContainer_prep.Panel1.SuspendLayout(); this.splitContainer_prep.Panel2.SuspendLayout(); @@ -139,19 +136,22 @@ private void InitializeComponent() // columnHeader_path // this.columnHeader_path.Text = "路径"; - this.columnHeader_path.Width = 200; + this.columnHeader_path.Width = 150; // // columnHeader_itemBarcode // this.columnHeader_itemBarcode.Text = "册条码"; + this.columnHeader_itemBarcode.Width = 100; // // columnHeader_isbn // this.columnHeader_isbn.Text = "ISBN"; + this.columnHeader_isbn.Width = 100; // // columnHeader_title // this.columnHeader_title.Text = "书名"; + this.columnHeader_title.Width = 150; // // columnHeader_author // @@ -160,30 +160,32 @@ private void InitializeComponent() // columnHeader_accessNo // this.columnHeader_accessNo.Text = "索取号"; + this.columnHeader_accessNo.Width = 100; // // columnHeader_location // this.columnHeader_location.Text = "馆藏地点"; - this.columnHeader_location.Width = 73; + this.columnHeader_location.Width = 100; // // columnHeader_readerBarcode // this.columnHeader_readerBarcode.Text = "预约者条码号"; - this.columnHeader_readerBarcode.Width = 96; + this.columnHeader_readerBarcode.Width = 100; // // columnHeader_readerName // this.columnHeader_readerName.Text = "预约者姓名"; - this.columnHeader_readerName.Width = 87; + this.columnHeader_readerName.Width = 100; // // columnHeader_department // this.columnHeader_department.Text = "预约者部门"; - this.columnHeader_department.Width = 90; + this.columnHeader_department.Width = 100; // // columnHeader_state // this.columnHeader_state.Text = "到书状态"; + this.columnHeader_state.Width = 100; // // columnHeader_isPrint // @@ -196,9 +198,10 @@ private void InitializeComponent() this.toolStripMenuItem_print, this.toolStripMenuItem_printPreview, this.toolStripMenuItem_export, - this.toolStripMenuItem_remove}); + this.toolStripMenuItem_remove, + this.toolStripMenuItem_change}); this.contextMenuStrip_prep.Name = "contextMenuStrip1"; - this.contextMenuStrip_prep.Size = new System.Drawing.Size(141, 92); + this.contextMenuStrip_prep.Size = new System.Drawing.Size(141, 114); this.contextMenuStrip_prep.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening); // // toolStripMenuItem_print @@ -229,25 +232,12 @@ private void InitializeComponent() this.toolStripMenuItem_remove.Text = "移除(&R)"; this.toolStripMenuItem_remove.Click += new System.EventHandler(this.toolStripMenuItem_remove_Click); // - // printDialog_prep + // toolStripMenuItem_change // - this.printDialog_prep.Document = this.printDocument_prep; - // - // printDocument_prep - // - this.printDocument_prep.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.pd_PrintPage); - // - // printPreviewDialog_prep - // - this.printPreviewDialog_prep.AutoScrollMargin = new System.Drawing.Size(0, 0); - this.printPreviewDialog_prep.AutoScrollMinSize = new System.Drawing.Size(0, 0); - this.printPreviewDialog_prep.ClientSize = new System.Drawing.Size(400, 300); - this.printPreviewDialog_prep.Document = this.printDocument_prep; - this.printPreviewDialog_prep.Enabled = true; - this.printPreviewDialog_prep.Icon = ((System.Drawing.Icon)(resources.GetObject("printPreviewDialog_prep.Icon"))); - this.printPreviewDialog_prep.Name = "printPreviewDialog_prep"; - this.printPreviewDialog_prep.UseAntiAlias = true; - this.printPreviewDialog_prep.Visible = false; + this.toolStripMenuItem_change.Name = "toolStripMenuItem_change"; + this.toolStripMenuItem_change.Size = new System.Drawing.Size(140, 22); + this.toolStripMenuItem_change.Text = "修改(&M)"; + this.toolStripMenuItem_change.Click += new System.EventHandler(this.toolStripMenuItem_change_Click); // // PrepForm // @@ -294,8 +284,6 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem_export; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem_remove; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem_printPreview; - private System.Windows.Forms.PrintDialog printDialog_prep; - private System.Windows.Forms.PrintPreviewDialog printPreviewDialog_prep; - private System.Drawing.Printing.PrintDocument printDocument_prep; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem_change; } } \ No newline at end of file diff --git a/dp2Mini/PrepForm.cs b/dp2Mini/PrepForm.cs index efdbd551..4ff3ab32 100644 --- a/dp2Mini/PrepForm.cs +++ b/dp2Mini/PrepForm.cs @@ -12,6 +12,7 @@ using DigitalPlatform.Marc; using DigitalPlatform.Forms; using DigitalPlatform.LibraryRestClient; +using System.Collections.Generic; namespace dp2Mini { @@ -120,7 +121,7 @@ private void button_search_Click(object sender, EventArgs e) { string strPath = record.Path; - string[] cols = FillListViewItem(channel, record); + string[] cols = FillListViewItem(channel, record.RecordBody.Xml); AppendNewLine(this.listView_results, strPath, cols); @@ -147,7 +148,7 @@ private void button_search_Click(object sender, EventArgs e) } - string[] FillListViewItem(LibraryChannel channel, Record record) + string[] FillListViewItem(LibraryChannel channel, string strRecord) { string strErrorInfo = ""; string strError = ""; @@ -155,9 +156,9 @@ string[] FillListViewItem(LibraryChannel channel, Record record) long lRet = 0; - string strXML = record.RecordBody.Xml; + // string strXML = record.RecordBody.Xml; XmlDocument dom = new XmlDocument(); - dom.LoadXml(strXML); + dom.LoadXml(strRecord); string strState = DomUtil.GetElementText(dom.DocumentElement, "state"); if ("arrived" == strState) @@ -167,6 +168,9 @@ string[] FillListViewItem(LibraryChannel channel, Record record) string strLocation = DomUtil.GetElementText(dom.DocumentElement, "location"); string strAccessNo = DomUtil.GetElementText(dom.DocumentElement, "accessNo"); + string strPrintState = DomUtil.GetElementText(dom.DocumentElement, "printState"); + if (string.IsNullOrEmpty(strPrintState)) + strPrintState = "未打印"; string strItemBarcode = DomUtil.GetElementText(dom.DocumentElement, "itemBarcode"); @@ -223,7 +227,7 @@ string[] FillListViewItem(LibraryChannel channel, Record record) cols[4] = strAccessNo; cols[5] = strLocation; cols[9] = strState; - cols[10] = "未打印"; + cols[10] = strPrintState; return cols; } @@ -246,7 +250,6 @@ public static ListViewItem AppendNewLine( ListViewUtil.EnsureColumns(list, others.Length + 1, 100); ListViewItem item = new ListViewItem(strID, 0); - list.Items.Add(item); if (others != null) @@ -269,6 +272,10 @@ void outputPrintFile() StringBuilder sb = new StringBuilder(256); foreach (ListViewItem item in this.listView_results.SelectedItems) { + string strPrintState = ListViewUtil.GetItemText(item, item.SubItems.Count - 1); + if (strPrintState == "已打印") + continue; + foreach (ListViewItem.ListViewSubItem subItem in item.SubItems) { string strText = subItem.Text; @@ -302,13 +309,17 @@ static string WrapString(string strText) private void toolStripMenuItem_print_Click(object sender, EventArgs e) { + Cursor oldCursor = this.Cursor; + this.Cursor = Cursors.WaitCursor; + string strError = ""; outputPrintFile(); CardPrintForm form = new CardPrintForm(); form.PrinterInfo = new PrinterInfo(); - form.CardFilename = "print.xml"; // 卡片文件名 + form.CardFilename = printFilename; // 卡片文件名 + form.ShowInTaskbar = false; form.WindowState = FormWindowState.Minimized; form.Show(); @@ -320,6 +331,12 @@ private void toolStripMenuItem_print_Click(object sender, EventArgs e) goto ERROR1; } form.Close(); + + ListViewItem[] items = new ListViewItem[this.listView_results.SelectedItems.Count]; + this.listView_results.SelectedItems.CopyTo(items, 0); + changeAcctiveItemPrintState(items); + + this.Cursor = oldCursor; return; ERROR1: MessageBox.Show(this, strError); @@ -327,26 +344,15 @@ private void toolStripMenuItem_print_Click(object sender, EventArgs e) private void toolStripMenuItem_printPreview_Click(object sender, EventArgs e) { + Cursor oldCursor = this.Cursor; + this.Cursor = Cursors.WaitCursor; + + outputPrintFile(); CardPrintForm dlg = new CardPrintForm(); - dlg.CardFilename = "print.xml"; // 卡片文件名 + dlg.CardFilename = printFilename; // 卡片文件名 dlg.PrintPreviewFromCardFile(); - - /* - if (printDialog_prep.ShowDialog(this) != DialogResult.OK) - return; - - try - { - outputPrintFile(); - printDocument_prep.PrinterSettings.PrinterName = printDialog_prep.PrinterSettings.PrinterName; - printPreviewDialog_prep.ShowDialog(this); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message); - } - */ + this.Cursor = oldCursor; } private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) @@ -372,43 +378,6 @@ private void toolStripMenuItem_export_Click(object sender, EventArgs e) } - private void pd_PrintPage(object sender, PrintPageEventArgs e) - { - int linesPerPage = 0; - float yPos = 0; - int count = 0; - float leftMargin = 5; // ev.MarginBounds.Left; - float topMargin = 5; // ev.MarginBounds.Top; - string line = null; - - Font printFont = new Font("微软雅黑", 9); - - // Calculate the number of lines per page. - linesPerPage = (int)(e.MarginBounds.Height / printFont.GetHeight(e.Graphics)); - - using (StreamReader reader = new StreamReader(printFilename, Encoding.UTF8)) - { - while (count < linesPerPage && - ((line = reader.ReadLine()) != null)) - { - yPos = topMargin + (count * printFont.GetHeight(e.Graphics)); - - e.Graphics.DrawString(line, - printFont, - Brushes.Black, - leftMargin, - yPos, - new StringFormat()); - count++; - } - // If more lines exist, print another page. - if (line != null) - e.HasMorePages = true; - else - e.HasMorePages = false; - } - } - private void toolStripMenuItem_remove_Click(object sender, EventArgs e) { Cursor oldCursor = this.Cursor; @@ -423,5 +392,80 @@ private void toolStripMenuItem_remove_Click(object sender, EventArgs e) this.Cursor = oldCursor; } + + private void toolStripMenuItem_change_Click(object sender, EventArgs e) + { + + } + + void changeAcctiveItemPrintState(ListViewItem[] items) + { + if (items.Length == 0) + return; + + MainForm mainForm = null; + if (this.MdiParent is MainForm) + mainForm = this.MdiParent as MainForm; + + Debug.Assert(mainForm != null, "MdiParent 父窗口为 null"); + + LibraryChannel channel = mainForm.GetChannel(); + try + { + string strResult = ""; + string strMetaData = ""; + byte[] baTimestamp = null; + string strOutputResPath = ""; + string strError = ""; + foreach (ListViewItem item in items) + { + Application.DoEvents(); + + string strResPath = item.Text; + long lRet = channel.GetRes(strResPath, + "content,data,metadata,timestamp,outputpath", + out strResult, + out strMetaData, + out baTimestamp, + out strOutputResPath, + out strError); + if (lRet == -1) + { + MessageBox.Show(this, strError); + return; + } + + XmlDocument dom = new XmlDocument(); + dom.LoadXml(strResult); + + string strPrintState = DomUtil.GetElementText(dom.DocumentElement, "printState"); + if (strPrintState == "已打印") + continue; + + DomUtil.SetElementText(dom.DocumentElement, "printState", "已打印"); + + byte[] baOutTimestamp = null; + lRet = channel.WriteRes(strResPath, + dom.DocumentElement.OuterXml, + true, + "", + baTimestamp, + out baOutTimestamp, + out strOutputResPath, + out strError); + if (lRet == -1) + { + MessageBox.Show(this, strError); + return; + } + + ListViewUtil.ChangeItemText(item, 11, "已打印"); + } + } + finally + { + mainForm.ReturnChannel(channel); + } + } } } diff --git a/dp2Mini/PrepForm.resx b/dp2Mini/PrepForm.resx index f610d9d5..a0c4206c 100644 --- a/dp2Mini/PrepForm.resx +++ b/dp2Mini/PrepForm.resx @@ -120,187 +120,4 @@ 17, 17 - - 208, 17 - - - 556, 17 - - - 359, 17 - - - - - AAABAAYAICAQAAAAAADoAgAAZgAAABAQEAAAAAAAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA - CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA - /wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIoiI - iIiIiIiIiIiIiIiIiIiCIigiIiIozMzMzMzMyCIogiIoIiIiKM7m5ubm5sgiKIIiKCIiIijObm5ubm7I - IiiCIigiIiIozubm5ubmyCIogiIoIiIiKM5ubm5ubsgiKIIiKCIiIijO5ubm5ubIIiiIiIiIiIiIzm5u - bm5uyCIogRERERERGM7u7u7u7sgiKIHZWVlZWRjMzMzMzMzIIiiB1ZWVlZUYiIiIiIiIiIiIgdlZWVlZ - GDMzMzMzMzMzOIHVlZWVlRg/uLi4uLi4uDiB2VlZWVkYP7uLi4uLi4s4gdWVlZWVGD+4uLi4uLi4OIHZ - WVlZWRg/u4uLi4uLiziB1ZWVlZUYP7i4uLi4uLg4gdlZWVlZGD+7i4uLi4uLOIHVlZWVlRg/uLi4uLi4 - uDiB3d3d3d0YP7uLi4uLi4s4gRERERERGD+4uLi4uLi4OIiIiIiIiIg/u4uLi4uLiziCIiIiIiIoP7i4 - uLi4uLg4giIiIiIiKD+7i4uLi4uLOIIiIiIiIig/uLi4uLi4uDiCIiIiIiIoP7u7u7u7u7s4giIiIiIi - KD//////////OIIiIiIiIigzMzMzMzMzMziIiIiIiIiIiIiIiIiIiIiIIiIiIiIiIiIiIiIiIiIiIv// - ////////AAAAAHv4AA57+AAOe/gADnv4AA57+AAOe/gADgAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4AAB/+AAAf/gAAH/4AAB/+AAAf/gAAAAA - AAD/////KAAAABAAAAAgAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACA - gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAiIiIiIiIiIoiI - iIiIiIiIgigijMzMyCiCKCKM5mbIKIiIiIzu7sgogRERjMzMyCiB2ZGIiIiIiIHZkYMzMzM4gdmRg/u7 - uziB3dGD+7u7OIEREYP7u7s4iIiIg/u7uziCIiKD+7u7OIIiIoP///84giIigzMzMziIiIiIiIiIiP// - KCIAACjObALm5mwCIigAAoiIAAKIzgAAbm4AACIoAAAREQAAGM4AAO7uAAAiKHwAWVl8ABjMfADMzAAA - IigoAAAAIAAAAEAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA - AACAAIAAgIAAAICAgADA3MAA8MqmAKo/KgD/PyoAAF8qAFVfKgCqXyoA/18qAAB/KgBVfyoAqn8qAP9/ - KgAAnyoAVZ8qAKqfKgD/nyoAAL8qAFW/KgCqvyoA/78qAADfKgBV3yoAqt8qAP/fKgAA/yoAVf8qAKr/ - KgD//yoAAABVAFUAVQCqAFUA/wBVAAAfVQBVH1UAqh9VAP8fVQAAP1UAVT9VAKo/VQD/P1UAAF9VAFVf - VQCqX1UA/19VAAB/VQBVf1UAqn9VAP9/VQAAn1UAVZ9VAKqfVQD/n1UAAL9VAFW/VQCqv1UA/79VAADf - VQBV31UAqt9VAP/fVQAA/1UAVf9VAKr/VQD//1UAAAB/AFUAfwCqAH8A/wB/AAAffwBVH38Aqh9/AP8f - fwAAP38AVT9/AKo/fwD/P38AAF9/AFVffwCqX38A/19/AAB/fwBVf38Aqn9/AP9/fwAAn38AVZ9/AKqf - fwD/n38AAL9/AFW/fwCqv38A/79/AADffwBV338Aqt9/AP/ffwAA/38AVf9/AKr/fwD//38AAACqAFUA - qgCqAKoA/wCqAAAfqgBVH6oAqh+qAP8fqgAAP6oAVT+qAKo/qgD/P6oAAF+qAFVfqgCqX6oA/1+qAAB/ - qgBVf6oAqn+qAP9/qgAAn6oAVZ+qAKqfqgD/n6oAAL+qAFW/qgCqv6oA/7+qAADfqgBV36oAqt+qAP/f - qgAA/6oAVf+qAKr/qgD//6oAAADUAFUA1ACqANQA/wDUAAAf1ABVH9QAqh/UAP8f1AAAP9QAVT/UAKo/ - 1AD/P9QAAF/UAFVf1ACqX9QA/1/UAAB/1ABVf9QAqn/UAP9/1AAAn9QAVZ/UAKqf1AD/n9QAAL/UAFW/ - 1ACqv9QA/7/UAADf1ABV39QAqt/UAP/f1AAA/9QAVf/UAKr/1AD//9QAVQD/AKoA/wAAH/8AVR//AKof - /wD/H/8AAD//AFU//wCqP/8A/z//AABf/wBVX/8Aql//AP9f/wAAf/8AVX//AKp//wD/f/8AAJ//AFWf - /wCqn/8A/5//AAC//wBVv/8Aqr//AP+//wAA3/8AVd//AKrf/wD/3/8AVf//AKr//wD/zMwA/8z/AP// - MwD//2YA//+ZAP//zAAAfwAAVX8AAKp/AAD/fwAAAJ8AAFWfAACqnwAA/58AAAC/AABVvwAAqr8AAP+/ - AAAA3wAAVd8AAKrfAAD/3wAAVf8AAKr/AAAAACoAVQAqAKoAKgD/ACoAAB8qAFUfKgCqHyoA/x8qAAA/ - KgBVPyoA8Pv/AKSgoACAgIAAAAD/AAD/AAAA//8A/wAAAAAAAAD//wAA////AP39/f39/f39/f39/f39 - /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 - /f39/f39/f39/f39/f39/f39/f39/f39qoYIqoYIhqoIqgiqCaoIqgiqhqqGhoYIhoYIqv39/f0I/f39 - /ar9/f39/YY2Ng4yDg4ODgoOCgoKCgqG/f39/Yb9/f39CP39/f39qjY7Ozs3Nzc3NjMSMjIOCqr9/f39 - qv39/f2G/f39/f0IN19fOzs3Nzc3NjcODg4KCP39/f0I/f39/ar9/f39/ao6X19fXzs7Ozc3NzY3NgqG - /f39/Yb9/f39CP39/f39hl9jY19jX187Ozs7Nzc3Dqr9/f39qv39/f2G/f39/f0IOodjh19jX19fXztf - OzcOCP39/f0ICAmqCAiqCKoICapfCYdjh2ODY19fXzs7Ow6q/f39/QhITEwoSCUoKSQoqmMJCYcJCWNj - Y2NfY19fNgj9/f39qkyZmZmYmJRwlCmqX19fXl9fX186WzY3Njc2gv39/f0JcJ2dmZmZlJmUJAmqCaoJ - hggIqggICKoIqggI/f39/YZwnp2dnZmZmJVMqnx8fHx8fFR8VHhUVFRUVKr9/f39CHChoZ2dnZ2ZmUwJ - fKSkxqSkxqSkpKSkpKBUCP39/f2qcKLDoqGdnZ2ZTKp8ysakxqSkxqSkxqSkpFSq/f39/QiUpqbDoqHE - nZ1Mq3ykqMakyqSkxqSkpKSkVAj9/f39hpTIyKbHoqGhoXAIfMrLpMqkxqSkxqTGpKRUqv39/f0IlMym - yKbIpcShcAh8y6jKpMqkxsqkpKSkxlQI/f39/aqUzMzMyKbIpqJwqnzLy8qpxsqkpMakxqSkeAj9/f39 - CJSUlJSUlJSUlJQJgMupy8qpysqkyqSkxqRUqv39/f2GCKoIqgiqCKoIhgigrcvPqcuoy8qkxsqkxnyG - /f39/ar9/f39/f39/f39qnzPz6nLy8uoyqnKpKTKVAj9/f39CP39/f39/f39/f0IfNDPz8+py8upyqjG - yqR8hv39/f2G/f39/f39/f39/Qik0K7P0M+ty8vLy6jKpXyq/f39/ar9/f39/f39/f39CHzQ09Ctz8/P - qcupy6jKeAj9/f39CP39/f39/f39/f2qoNPQ0NPQ0M/Qz8vLy6l8CP39/f2G/f39/f39/f39/QmkfKR8 - oHx8fHx8fHx8fHyG/f39/aoIqgiqCKoIqgiqCKoIqgiqCKoIqgiqCKoIqgj9/f39/f39/f39/f39/f39 - /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3///////////// - ///AAAAD3vgAA974AAPe+AAD3vgAA974AAPe+AADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA - AAPAAAADwAAAA8AAAAPAAAADwAAAA9/4AAPf+AAD3/gAA9/4AAPf+AAD3/gAA8AAAAP//////////ygA - AAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAA - gACAgAAAgICAAMDcwADwyqYAqj8qAP8/KgAAXyoAVV8qAKpfKgD/XyoAAH8qAFV/KgCqfyoA/38qAACf - KgBVnyoAqp8qAP+fKgAAvyoAVb8qAKq/KgD/vyoAAN8qAFXfKgCq3yoA/98qAAD/KgBV/yoAqv8qAP// - KgAAAFUAVQBVAKoAVQD/AFUAAB9VAFUfVQCqH1UA/x9VAAA/VQBVP1UAqj9VAP8/VQAAX1UAVV9VAKpf - VQD/X1UAAH9VAFV/VQCqf1UA/39VAACfVQBVn1UAqp9VAP+fVQAAv1UAVb9VAKq/VQD/v1UAAN9VAFXf - VQCq31UA/99VAAD/VQBV/1UAqv9VAP//VQAAAH8AVQB/AKoAfwD/AH8AAB9/AFUffwCqH38A/x9/AAA/ - fwBVP38Aqj9/AP8/fwAAX38AVV9/AKpffwD/X38AAH9/AFV/fwCqf38A/39/AACffwBVn38Aqp9/AP+f - fwAAv38AVb9/AKq/fwD/v38AAN9/AFXffwCq338A/99/AAD/fwBV/38Aqv9/AP//fwAAAKoAVQCqAKoA - qgD/AKoAAB+qAFUfqgCqH6oA/x+qAAA/qgBVP6oAqj+qAP8/qgAAX6oAVV+qAKpfqgD/X6oAAH+qAFV/ - qgCqf6oA/3+qAACfqgBVn6oAqp+qAP+fqgAAv6oAVb+qAKq/qgD/v6oAAN+qAFXfqgCq36oA/9+qAAD/ - qgBV/6oAqv+qAP//qgAAANQAVQDUAKoA1AD/ANQAAB/UAFUf1ACqH9QA/x/UAAA/1ABVP9QAqj/UAP8/ - 1AAAX9QAVV/UAKpf1AD/X9QAAH/UAFV/1ACqf9QA/3/UAACf1ABVn9QAqp/UAP+f1AAAv9QAVb/UAKq/ - 1AD/v9QAAN/UAFXf1ACq39QA/9/UAAD/1ABV/9QAqv/UAP//1ABVAP8AqgD/AAAf/wBVH/8Aqh//AP8f - /wAAP/8AVT//AKo//wD/P/8AAF//AFVf/wCqX/8A/1//AAB//wBVf/8Aqn//AP9//wAAn/8AVZ//AKqf - /wD/n/8AAL//AFW//wCqv/8A/7//AADf/wBV3/8Aqt//AP/f/wBV//8Aqv//AP/MzAD/zP8A//8zAP// - ZgD//5kA///MAAB/AABVfwAAqn8AAP9/AAAAnwAAVZ8AAKqfAAD/nwAAAL8AAFW/AACqvwAA/78AAADf - AABV3wAAqt8AAP/fAABV/wAAqv8AAAAAKgBVACoAqgAqAP8AKgAAHyoAVR8qAKofKgD/HyoAAD8qAFU/ - KgDw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAAAAAAAP//AAD///8A/f39/f39/f39/f39/f39/f0I - hgiqCKoICKoICKaGCP39qv39hv2GNg4ODjII/ar9/Yb9/ar9qjdjXzsOCP2G/f0IhquGCAleCWNfNob9 - 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 - bv+3d0n/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/FRqE/0dN1v8/RNL/Nz3Q/y40zv8nLcz/ISfK/xwh - yf8WHMf/GxJh/8K/wf/gr3r/4K96/+Cvev/gr3r/3614/9yqdf/apnL/16Nw/9Sea//Rmmj/zZZk/8qR - X//GjFz/w4dW/7+CUv/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8SHZD/WF3a/05U1/9FS9X/PUPS/zU7 - 0P8uM83/JyzL/yAmyf8aFGn/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/ - wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/xAfnP9obt7/YGTc/1Zb - 2f9NU9f/RUrU/ztB0v80OdD/LDHO/xgWcv/Cv8H/Dn+n/w18pP8MeqH/DHie/wt1m/8Kc5j/CXGV/wlv - k/8JbJD/CGqN/wdpi/8HZ4j/BmWH/wZkhf8GYoP/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/DiKp/3l+ - 4/9vdeH/Zmze/11i2/9UWtn/S1HW/0NI1P86P9H/Fhh9/8K/wf8Ogar/Barp/wGo6P8Apef/AKPm/wCi - 5P8An+L/AJ7h/wCd3/8AnN7/AJnc/wCY2/8AmNn/AJbX/wZjhP/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/ - wf8MJbX/iI7n/4CF5v93fOP/bnPg/2Vr3f9bYdv/UljY/0lP1v8UGoj/wr/B/w+Erf8Lrur/Bqvq/wOo - 6f8Apuf/AKTm/wCi5f8AoOT/AJ/i/wCd4f8AnN//AJrd/wCZ2/8AmNr/BmWH/8K/wf8AAAAAAAAAAAAA - AAAAAAAAwr/B/wkowP+WnOz/jpTq/4aL6P9+hOX/dXri/2xx4P9jaN3/WV/b/xEek//Cv8H/EIaw/xay - 7P8Or+z/Cavr/wWq6v8Bp+j/AKbn/wCj5f8AoeT/AJ/j/wCe4f8AnOD/AJve/wCa3f8HZ4n/wr/B/wAA - AAAAAAAAAAAAAAAAAADCv8H/CCrK/6Ko7/+coe7/lZrr/42T6f+Fiub/fIHl/3N54v9rcN//ECGg/8K/ - wf8QiLP/I7nu/xq07f8Ssez/C63r/war6v8Cqen/AKbo/wCk5v8AouX/AKHk/wCf4f8AneH/AJzf/who - i//Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8GLNP/q7Hy/6as8P+hpu//mp/u/5OY6/+LkOj/g4nm/3qA - 5P8NI6z/wr/B/xCKtv8xvvD/J7rv/x627f8Vsuz/Dq/s/wmr6/8Equn/Aafo/wCl5/8Ao+X/AKHk/wCf - 4v8AnuH/CGqO/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wUu2/+vtPP/r7Tz/6qv8v+mq/D/oKXv/5me - 7f+Sl+v/io/p/wsmt//Cv8H/Eo24/0HF8f82wfD/LLzv/yK47v8atO3/EbHs/wut6/8Gq+r/A6np/wCm - 6P8Apeb/AKLl/wCh5P8IbJD/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/BC/h/wQv3/8FL9z/BS3Z/wYt - 1v8GLNL/ByvP/wgqy/8IKcb/CSnC/8K/wf8Sjrv/Uszy/0fH8f87w/H/Mb7v/ye67/8et+7/FbPt/w6v - 6/8IrOv/BKnp/wGo6P8Apef/AKPl/wluk//Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf/Cv8H/wr/B/8K/ - wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/xKRvf9j0/P/WM/z/0zK8f9BxfH/N8Hw/yy8 - 7/8iuO7/GbTt/xGx7P8Lruv/Bqrq/wOo6f8Apuf/CnGV/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCv8H/E5LA/3Ta8/9q1fP/XtHz/1LM - 8v9Hx/H/O8Pw/zG+7/8nu+//Hrbt/xay7f8Or+v/CKzq/wSq6f8Kc5j/wr/B/wAAAAAAAAAAAAAAAAAA - AADCv8H/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMK/wf8UlMH/hOD1/3rc - 9f9v2PP/ZNTy/1jO8v9NyvH/Qsbx/zbB8P8svO//I7ju/xm07f8SsOz/C67r/wt2m//Cv8H/AAAAAAAA - AAAAAAAAAAAAAMK/wf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwr/B/xSW - w/+T5vb/iuL1/3/e9P912vT/adbz/13R8/9SzPL/R8jx/zzD8P8xvvD/J7rv/x627v8Vsuz/C3ie/8K/ - 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 - - \ No newline at end of file From b7fdd8ab5ef0aee9eddeb28d653153d9eeee3a0f Mon Sep 17 00:00:00 2001 From: paopaofeng Date: Fri, 13 Jul 2018 10:22:20 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=90=8E=E5=86=8D=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dp2Mini/PrepForm.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dp2Mini/PrepForm.cs b/dp2Mini/PrepForm.cs index 4ff3ab32..32c88772 100644 --- a/dp2Mini/PrepForm.cs +++ b/dp2Mini/PrepForm.cs @@ -272,10 +272,11 @@ void outputPrintFile() StringBuilder sb = new StringBuilder(256); foreach (ListViewItem item in this.listView_results.SelectedItems) { +/* string strPrintState = ListViewUtil.GetItemText(item, item.SubItems.Count - 1); if (strPrintState == "已打印") continue; - +*/ foreach (ListViewItem.ListViewSubItem subItem in item.SubItems) { string strText = subItem.Text; @@ -395,10 +396,12 @@ private void toolStripMenuItem_remove_Click(object sender, EventArgs e) private void toolStripMenuItem_change_Click(object sender, EventArgs e) { - + ListViewItem[] listViews = new ListViewItem[this.listView_results.SelectedItems.Count]; + this.listView_results.SelectedItems.CopyTo(listViews, 0); + changeAcctiveItemPrintState(listViews, ""); } - void changeAcctiveItemPrintState(ListViewItem[] items) + void changeAcctiveItemPrintState(ListViewItem[] items, string strChangeState = "已打印") { if (items.Length == 0) return; @@ -439,10 +442,10 @@ void changeAcctiveItemPrintState(ListViewItem[] items) dom.LoadXml(strResult); string strPrintState = DomUtil.GetElementText(dom.DocumentElement, "printState"); - if (strPrintState == "已打印") + if (strPrintState == strChangeState) continue; - DomUtil.SetElementText(dom.DocumentElement, "printState", "已打印"); + DomUtil.SetElementText(dom.DocumentElement, "printState", strChangeState); byte[] baOutTimestamp = null; lRet = channel.WriteRes(strResPath, @@ -459,7 +462,7 @@ void changeAcctiveItemPrintState(ListViewItem[] items) return; } - ListViewUtil.ChangeItemText(item, 11, "已打印"); + ListViewUtil.ChangeItemText(item, 11, strChangeState); } } finally