<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7129382779087533277</id><updated>2026-10-14T08:54:14.599-04:00</updated><category term="Slice Bitmap Fixed Size"/><category term="docx word mass search replace text"/><title type='text'>KodeSharp</title><subtitle type='html'>    //Your (and mine too) one stop shop for all C# .Net and JavaScript code snippets;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>77</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-9199821918627889916</id><published>2011-11-17T14:03:00.001-05:00</published><updated>2011-11-17T14:08:36.569-05:00</updated><title type='text'>A strategy for maintaining sequence in parallel processing in .Net 4.0</title><content type='html'>&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;Most of us are aware&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&amp;nbsp;how the offerings of parallel processing introduced in .Net 4.0 (actually with .Net 3.5 as well, but the integration was not as seamless) can bring significant performance benefits while processing CPU intensive tasks. In terms of practical usage, recently for one of my projects I was looking to take advantage of parallel processing while trying to split the image of a 8.5 x 11 inch page into multiple slices, and then process individual slices using GDI+ (some very CPU intensive processing as you can guess). &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;But there was a slight catch – while it was perfectly OK to process each slice in any CPU in any order, but before I returned the individual image back, I had to put the slices back in order so that the page image could be reconstituted from the individual slices that would be put back in the original sequence. Kind of goes like this:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;mso-no-proof: yes;&quot;&gt;&lt;shapetype coordsize=&quot;21600,21600&quot; filled=&quot;f&quot; id=&quot;_x0000_t75&quot; o:preferrelative=&quot;t&quot; o:spt=&quot;75&quot; path=&quot;m@4@5l@4@11@9@11@9@5xe&quot; stroked=&quot;f&quot;&gt;&lt;stroke joinstyle=&quot;miter&quot;&gt;&lt;/stroke&gt;&lt;formulas&gt;&lt;f eqn=&quot;if lineDrawn pixelLineWidth 0&quot;&gt;&lt;/f&gt;&lt;f eqn=&quot;sum @0 1 0&quot;&gt;&lt;/f&gt;&lt;f eqn=&quot;sum 0 0 @1&quot;&gt;&lt;/f&gt;&lt;f eqn=&quot;prod @2 1 2&quot;&gt;&lt;/f&gt;&lt;f eqn=&quot;prod @3 21600 pixelWidth&quot;&gt;&lt;/f&gt;&lt;f eqn=&quot;prod @3 21600 pixelHeight&quot;&gt;&lt;/f&gt;&lt;f eqn=&quot;sum @0 0 1&quot;&gt;&lt;/f&gt;&lt;f eqn=&quot;prod @6 1 2&quot;&gt;&lt;/f&gt;&lt;f eqn=&quot;prod @7 21600 pixelWidth&quot;&gt;&lt;/f&gt;&lt;f eqn=&quot;sum @8 21600 0&quot;&gt;&lt;/f&gt;&lt;f eqn=&quot;prod @7 21600 pixelHeight&quot;&gt;&lt;/f&gt;&lt;f eqn=&quot;sum @10 21600 0&quot;&gt;&lt;/f&gt;&lt;/formulas&gt;&lt;path gradientshapeok=&quot;t&quot; o:connecttype=&quot;rect&quot; o:extrusionok=&quot;f&quot;&gt;&lt;/path&gt;&lt;lock aspectratio=&quot;t&quot; v:ext=&quot;edit&quot;&gt;&lt;/lock&gt;&lt;/shapetype&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixE3pg8azmUu0yShckjD7ihLPWm_1wPf5MdpjZTa4p3FO2j3_G_IY45SBqOUfqVZGQn3UQXv2UYCdxgcK611IVvC34bOuU1l1ZAYuMwl7j8_JnukBsyUZkaEjj8PZAZF2h4HDT1si5pum5/s1600/parallel_issue.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; hda=&quot;true&quot; height=&quot;196&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixE3pg8azmUu0yShckjD7ihLPWm_1wPf5MdpjZTa4p3FO2j3_G_IY45SBqOUfqVZGQn3UQXv2UYCdxgcK611IVvC34bOuU1l1ZAYuMwl7j8_JnukBsyUZkaEjj8PZAZF2h4HDT1si5pum5/s640/parallel_issue.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;Unfortunately, that’s when the issue started. When I looked up the info online, there were many wild guesses and some bits and pieces of info here and there using PLINQ’s AsOrdered() approach, but nothing concrete that showed a clean implementation. So I ended up writing my own class implementation to take care of this.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;So, starting from scratch, here is the original non-parallel implementation:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: green; font-family: Consolas; font-size: 9.5pt;&quot;&gt;//Main CPU intensive function that runs in sequential loop&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;RealObject&lt;/span&gt;&amp;gt; PerformSequential()&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;RealObject&lt;/span&gt;&amp;gt; myObjectArray = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;RealObject&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;for&lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; i=0; i&amp;lt; 100; i++)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;myObjectArray.Add(GetMyRealObject());&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; myObjectArray;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;First step was to make the for-loop parallel:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: green; font-family: Consolas; font-size: 9.5pt;&quot;&gt;//Main CPU intensive function that runs in parallel loop&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;RealObject&lt;/span&gt;&amp;gt; PerformParallel()&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;RealObject&lt;/span&gt;&amp;gt; myObjectArray = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;RealObject&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Parallel&lt;/span&gt;.For(0, 100, i =&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;myObjectArray.Add(GetMyRealObject());&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; myObjectArray;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;So obviously due to the parallel nature of the way work is performed, the list myObjectArray will have randomly positioned items e.g. i=2, followed by i=0, then 3 and then 1 etc. The intention is to be able to return the myObjectArray list after re-sorting the individual objects within it so that they correspond to i=0, 1, 2, 3 etc. &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;For doing this we would add a new class, which will hold the individual RealObject objects, and another variable that will hold the location pointer. This object will implement the IComparable interface and we will overload the CompareTo implementation so that later when we sort the objects, we can regain the original sequence of objects that they were intended to be received as:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: green; font-family: Consolas; font-size: 9.5pt;&quot;&gt;//The intermediate object that will hold the true object and implement sorting&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; &lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;SortableRealObject&lt;/span&gt; : &lt;span style=&quot;color: #2b91af;&quot;&gt;IComparable&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; locationPointer;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;RealObject&lt;/span&gt; realObject;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; CompareTo(&lt;span style=&quot;color: blue;&quot;&gt;object&lt;/span&gt; obj)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;SortableRealObject&lt;/span&gt; thisObject = (&lt;span style=&quot;color: #2b91af;&quot;&gt;SortableRealObject&lt;/span&gt;)obj;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;.locationPointer.CompareTo(thisObject.locationPointer);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;Then all we will need to do is populate this locationPointer within the loop, do a sort on the array, and finally repopulate the true object to be returned. So the modified code will look like this:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: green; font-family: Consolas; font-size: 9.5pt;&quot;&gt;//Main CPU intensive function that runs in parallel loop&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;RealObject&lt;/span&gt;&amp;gt; PerformParallel()&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;RealObject&lt;/span&gt;&amp;gt; myObjectArray = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;RealObject&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;SortableRealObject&lt;/span&gt;&amp;gt; mySortableObjectArray = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;SortableRealObject&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Parallel&lt;/span&gt;.For(0, 100, i =&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mySortableObjectArray.Add(&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;SortableRealObject&lt;/span&gt;(){locationPointer = i, realObject = GetMyRealObject()});&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mySortableObjectArray.Sort();&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;foreach&lt;/span&gt;(&lt;span style=&quot;color: #2b91af;&quot;&gt;SortableRealObject&lt;/span&gt; mySortableObject &lt;span style=&quot;color: blue;&quot;&gt;in&lt;/span&gt; mySortableObjectArray)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;myObjectArray.Add(mySortableObject. realObject;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; myObjectArray;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 0pt; mso-layout-grid-align: none;&quot;&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;That’s it, we now have &lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 9.5pt;&quot;&gt;GetMyRealObject() that was performed parallel on multiple CPU cores, while the returned myObjectArray is perfectly sorted in the way they would have been if the for loop was performed sequentially in a regular for loop!&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/9199821918627889916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2011/11/strategy-for-maintaining-sequence-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/9199821918627889916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/9199821918627889916'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2011/11/strategy-for-maintaining-sequence-in.html' title='A strategy for maintaining sequence in parallel processing in .Net 4.0'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixE3pg8azmUu0yShckjD7ihLPWm_1wPf5MdpjZTa4p3FO2j3_G_IY45SBqOUfqVZGQn3UQXv2UYCdxgcK611IVvC34bOuU1l1ZAYuMwl7j8_JnukBsyUZkaEjj8PZAZF2h4HDT1si5pum5/s72-c/parallel_issue.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-5126146564363965762</id><published>2011-11-15T10:58:00.001-05:00</published><updated>2011-11-18T14:15:31.854-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Slice Bitmap Fixed Size"/><title type='text'>C#: Slice a Bitmap horizontally with a specified maximum (physical) size per slice</title><content type='html'>I will explain the problem in detail once I find some time... but here is the code for now:&lt;br /&gt;
&lt;br /&gt;
Sample code to call the slicer class (using a PNG image in this example)&lt;br /&gt;
******************************************************&lt;br /&gt;
Bitmap baseBitmap = Bitmap.FromFile(&quot;c:\\mybitmap.png&quot;);&lt;br /&gt;
ImageSlicer slicer = new ImageSlicer();&lt;br /&gt;
List&amp;lt;Bitmap&amp;gt; slicedBitmaps = slicer.SliceImage(baseBitmap, 20000, ImageFormat.Png);&lt;br /&gt;
&lt;br /&gt;
Code for the class&lt;br /&gt;
**************&lt;br /&gt;
&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Drawing.Imaging;&lt;br /&gt;
using System.IO;&lt;br /&gt;
&lt;br /&gt;
namespace KodeSharp.ImageSlicer&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;class ImageSlicer&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public List&amp;lt;Bitmap&amp;gt; SliceImage(Bitmap baseBitmap, int maxSizeInBytes, ImageFormat imageType)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return GetSlicedImages(new List&amp;lt;Bitmap&amp;gt;() { baseBitmap }, maxSizeInBytes, imageType);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private List&amp;lt;Bitmap&amp;gt; GetSlicedImages(List&amp;lt;Bitmap&amp;gt; baseBitmaps, int maxSizeInBytes, ImageFormat imageType)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Bitmap&amp;gt; bmpOut = new List&amp;lt;Bitmap&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (Bitmap bmp in baseBitmaps)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (IsSliceTooBig(bmp, maxSizeInBytes, imageType))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Bitmap&amp;gt; bmps = SliceImageInHalf(bmp);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bmpOut.AddRange(GetSlicedImages(new List&amp;lt;Bitmap&amp;gt;() { bmps[0] }, maxSizeInBytes, imageType));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bmpOut.AddRange(GetSlicedImages(new List&amp;lt;Bitmap&amp;gt;() { bmps[1] }, maxSizeInBytes, imageType));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bmpOut.Add(bmp);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return bmpOut;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private bool IsSliceTooBig(Bitmap bmp, int maxSizeInBytes, ImageFormat imageType)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MemoryStream ms = new MemoryStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bmp.Save(ms, imageType);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (ms.Length &amp;gt; maxSizeInBytes)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private List&amp;lt;Bitmap&amp;gt; SliceImageInHalf(Bitmap sourceImage)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int slice1Height = sourceImage.Height / 2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int slice2Height = sourceImage.Height - slice1Height;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int sliceWidth = sourceImage.Width;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Bitmap slice1 = sourceImage.Clone(new Rectangle(0, 0, sliceWidth, slice1Height), sourceImage.PixelFormat);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Bitmap slice2 = sourceImage.Clone(new Rectangle(0, slice1Height, sliceWidth, slice2Height), sourceImage.PixelFormat);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new List&amp;lt;Bitmap&amp;gt;() { slice1, slice2 };&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/5126146564363965762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2011/11/c-slice-bitmap-horizontally-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/5126146564363965762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/5126146564363965762'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2011/11/c-slice-bitmap-horizontally-with.html' title='C#: Slice a Bitmap horizontally with a specified maximum (physical) size per slice'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-3349296372458969477</id><published>2011-07-13T15:44:00.004-04:00</published><updated>2011-07-14T15:35:55.818-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="docx word mass search replace text"/><title type='text'>C#: Mass search and replace text in Word documents</title><content type='html'>&lt;div style=&quot;background: white; color: black; font-family: Consolas; font-size: 13px;&quot;&gt;Code sequence to call (remember to call Dispose() to close all WINWORD instances):&lt;/div&gt;&lt;pre style=&quot;background: white; color: black; font-family: Consolas; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;div style=&quot;background: white; color: black; font-family: Consolas;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;DocxSearchAndReplace&lt;/span&gt;&amp;nbsp;docxSearchAndReplace&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;DocxSearchAndReplace&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;background: white; color: black; font-family: Consolas;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;DocxSearchAndReplace&lt;/span&gt;.&lt;span style=&quot;color: #2b91af;&quot;&gt;SearchAndReplaceResult&lt;/span&gt;&amp;nbsp;result&amp;nbsp;=&amp;nbsp;docxSearchAndReplace.SearchAndReplace(parameters...);&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background: white; color: black; font-family: Consolas; font-size: 13px;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;docxSearchAndReplace.Dispose();
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;div style=&quot;background: white; color: black; font-family: Consolas; font-size: 13px;&quot;&gt;And finally here is the DocxSearchAndReplace.cs class:&lt;/div&gt;&lt;div style=&quot;background: white; color: black; font-family: Consolas; font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;pre style=&quot;background: white; color: black; font-family: Consolas; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;pre style=&quot;background: white; color: black; font-family: Consolas; font-size: 13px;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt;&amp;nbsp;System;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.Collections.Generic;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.IO;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt;&amp;nbsp;Word&amp;nbsp;=&amp;nbsp;Microsoft.Office.Interop.Word;
 
&lt;span style=&quot;color: blue;&quot;&gt;namespace&lt;/span&gt;&amp;nbsp;KodeSharp.MassDocx
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;DocxSearchAndReplace&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;IDisposable&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;object&lt;/span&gt;&amp;nbsp;objMissing&amp;nbsp;=&amp;nbsp;System.Reflection.&lt;span style=&quot;color: #2b91af;&quot;&gt;Missing&lt;/span&gt;.Value;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;object&lt;/span&gt;&amp;nbsp;objFalse&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;object&lt;/span&gt;&amp;nbsp;objTrue&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;true&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//wordApp&amp;nbsp;is&amp;nbsp;used&amp;nbsp;globally&amp;nbsp;to&amp;nbsp;make&amp;nbsp;sure&amp;nbsp;multiple&amp;nbsp;calls&amp;nbsp;to&amp;nbsp;SearchAndReplace()&amp;nbsp;in&amp;nbsp;a&amp;nbsp;loop&amp;nbsp;is&amp;nbsp;performance-optimized&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Application&lt;/span&gt;&amp;nbsp;wordApp;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;struct&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;SearchAndReplaceResult&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;FileName;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&amp;nbsp;NumberOfChanges;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;Message;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;SearchAndReplaceResult(&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;fileName,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&amp;nbsp;numberOfChanges,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;message)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FileName&amp;nbsp;=&amp;nbsp;fileName;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NumberOfChanges&amp;nbsp;=&amp;nbsp;numberOfChanges;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Message&amp;nbsp;=&amp;nbsp;message;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;DocxSearchAndReplace()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Application&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//Dispose&amp;nbsp;must&amp;nbsp;be&amp;nbsp;called&amp;nbsp;to&amp;nbsp;dispose&amp;nbsp;the&amp;nbsp;Word&amp;nbsp;COM&amp;nbsp;objects&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt;&amp;nbsp;Dispose()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;_Application&lt;/span&gt;)wordApp).Quit();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Runtime.InteropServices.&lt;span style=&quot;color: #2b91af;&quot;&gt;Marshal&lt;/span&gt;.ReleaseComObject(wordApp);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;SearchAndReplaceResult&lt;/span&gt;&amp;nbsp;SearchAndReplace(&lt;span style=&quot;color: #2b91af;&quot;&gt;FileInfo&lt;/span&gt;&amp;nbsp;wordFile,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;searchText,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;replaceText,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchCase,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchWholeWord,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchWildcard,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchSoundsLike,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchAllWordForms,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;sourceFamily,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;sourceSize,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;sourceStyleCheck,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;sourceBold,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;sourceItalic,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;sourceUnderline,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;targetFamily,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;targetSize,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;targetStyleCheck,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;targetBold,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;targetItalic,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;targetUnderline,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;dummySave,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;trackChanges)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//Ignore&amp;nbsp;temporary&amp;nbsp;files&amp;nbsp;that&amp;nbsp;Word&amp;nbsp;creates&amp;nbsp;during&amp;nbsp;a&amp;nbsp;session&amp;nbsp;and&amp;nbsp;are&amp;nbsp;left&amp;nbsp;alone&amp;nbsp;when&amp;nbsp;Word&amp;nbsp;is&amp;nbsp;closed&amp;nbsp;improperly&amp;nbsp;or&amp;nbsp;forcibly&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(wordFile.Name.StartsWith(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;~$&quot;&lt;/span&gt;)&amp;nbsp;||&amp;nbsp;wordFile.Extension.ToLower()&amp;nbsp;!=&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;.docx&quot;&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;SearchAndReplaceResult&lt;/span&gt;(wordFile.Name,&amp;nbsp;0,&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Invalid&amp;nbsp;file&quot;&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Document&lt;/span&gt;&amp;nbsp;wordDoc&amp;nbsp;=&amp;nbsp;wordApp.Documents.Open(wordFile.FullName);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.Find.ClearFormatting();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.Find.Replacement.ClearFormatting();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!&lt;span style=&quot;color: #2b91af;&quot;&gt;String&lt;/span&gt;.IsNullOrEmpty(sourceFamily))&amp;nbsp;wordApp.Selection.Find.Font.Name&amp;nbsp;=&amp;nbsp;sourceFamily;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!&lt;span style=&quot;color: #2b91af;&quot;&gt;String&lt;/span&gt;.IsNullOrEmpty(sourceSize))&amp;nbsp;wordApp.Selection.Find.Font.Size&amp;nbsp;=&amp;nbsp;(&lt;span style=&quot;color: blue;&quot;&gt;float&lt;/span&gt;)&lt;span style=&quot;color: #2b91af;&quot;&gt;Convert&lt;/span&gt;.ToDouble(sourceSize);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(sourceStyleCheck)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.Find.Font.Bold&amp;nbsp;=&amp;nbsp;sourceBold&amp;nbsp;?&amp;nbsp;1&amp;nbsp;:&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.Find.Font.Italic&amp;nbsp;=&amp;nbsp;sourceItalic&amp;nbsp;?&amp;nbsp;1&amp;nbsp;:&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.Find.Font.Underline&amp;nbsp;=&amp;nbsp;sourceUnderline&amp;nbsp;?&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdUnderline&lt;/span&gt;.wdUnderlineSingle&amp;nbsp;:&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdUnderline&lt;/span&gt;.wdUnderlineNone;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!&lt;span style=&quot;color: #2b91af;&quot;&gt;String&lt;/span&gt;.IsNullOrEmpty(targetFamily))&amp;nbsp;wordApp.Selection.Find.Replacement.Font.Name&amp;nbsp;=&amp;nbsp;targetFamily;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!&lt;span style=&quot;color: #2b91af;&quot;&gt;String&lt;/span&gt;.IsNullOrEmpty(targetSize))&amp;nbsp;wordApp.Selection.Find.Replacement.Font.Size&amp;nbsp;=&amp;nbsp;(&lt;span style=&quot;color: blue;&quot;&gt;float&lt;/span&gt;)&lt;span style=&quot;color: #2b91af;&quot;&gt;Convert&lt;/span&gt;.ToDouble(targetSize);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(targetStyleCheck)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.Find.Replacement.Font.Bold&amp;nbsp;=&amp;nbsp;targetBold&amp;nbsp;?&amp;nbsp;1&amp;nbsp;:&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.Find.Replacement.Font.Italic&amp;nbsp;=&amp;nbsp;targetItalic&amp;nbsp;?&amp;nbsp;1&amp;nbsp;:&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.Find.Replacement.Font.Underline&amp;nbsp;=&amp;nbsp;targetUnderline&amp;nbsp;?&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdUnderline&lt;/span&gt;.wdUnderlineSingle&amp;nbsp;:&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdUnderline&lt;/span&gt;.wdUnderlineNone;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;gt;&amp;nbsp;trackChangeStatus&amp;nbsp;=&amp;nbsp;GetTrackChangeStatus(wordDoc);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!dummySave)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetTrackChangeStatus(wordDoc,&amp;nbsp;trackChanges);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&amp;nbsp;numChanged&amp;nbsp;=&amp;nbsp;0;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//Body&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.WholeStory();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Selection&lt;/span&gt;&amp;nbsp;wordSelection&amp;nbsp;=&amp;nbsp;wordApp.Selection;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChanges(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//TextBoxes&amp;nbsp;within&amp;nbsp;body&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Shapes&lt;/span&gt;&amp;nbsp;wordShapes&amp;nbsp;=&amp;nbsp;wordDoc.Shapes;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChangesWithinShapes(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordShapes,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//Headers,&amp;nbsp;Footers&amp;nbsp;and&amp;nbsp;Textboxes&amp;nbsp;within&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;foreach&lt;/span&gt;&amp;nbsp;(Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Section&lt;/span&gt;&amp;nbsp;wordSection&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;in&lt;/span&gt;&amp;nbsp;wordDoc.Sections)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//Headers&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordSection.Headers[Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdHeaderFooterIndex&lt;/span&gt;.wdHeaderFooterEvenPages].Range.Select();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChanges(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordSection.Headers[Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdHeaderFooterIndex&lt;/span&gt;.wdHeaderFooterFirstPage].Range.Select();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChanges(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordSection.Headers[Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdHeaderFooterIndex&lt;/span&gt;.wdHeaderFooterPrimary].Range.Select();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChanges(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//Footers&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordSection.Footers[Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdHeaderFooterIndex&lt;/span&gt;.wdHeaderFooterEvenPages].Range.Select();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChanges(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordSection.Footers[Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdHeaderFooterIndex&lt;/span&gt;.wdHeaderFooterFirstPage].Range.Select();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChanges(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordSection.Footers[Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdHeaderFooterIndex&lt;/span&gt;.wdHeaderFooterPrimary].Range.Select();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChanges(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//Textboxes&amp;nbsp;within&amp;nbsp;Headers&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordShapes&amp;nbsp;=&amp;nbsp;wordSection.Headers[Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdHeaderFooterIndex&lt;/span&gt;.wdHeaderFooterEvenPages].Shapes;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChangesWithinShapes(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordShapes,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordShapes&amp;nbsp;=&amp;nbsp;wordSection.Headers[Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdHeaderFooterIndex&lt;/span&gt;.wdHeaderFooterFirstPage].Shapes;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChangesWithinShapes(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordShapes,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordShapes&amp;nbsp;=&amp;nbsp;wordSection.Headers[Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdHeaderFooterIndex&lt;/span&gt;.wdHeaderFooterPrimary].Shapes;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChangesWithinShapes(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordShapes,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//Textboxes&amp;nbsp;within&amp;nbsp;Footers&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordShapes&amp;nbsp;=&amp;nbsp;wordSection.Footers[Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdHeaderFooterIndex&lt;/span&gt;.wdHeaderFooterEvenPages].Shapes;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChangesWithinShapes(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordShapes,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordShapes&amp;nbsp;=&amp;nbsp;wordSection.Footers[Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdHeaderFooterIndex&lt;/span&gt;.wdHeaderFooterFirstPage].Shapes;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChangesWithinShapes(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordShapes,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordShapes&amp;nbsp;=&amp;nbsp;wordSection.Footers[Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdHeaderFooterIndex&lt;/span&gt;.wdHeaderFooterPrimary].Shapes;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChangesWithinShapes(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordShapes,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!dummySave)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetTrackChangeStatus(wordDoc,&amp;nbsp;trackChangeStatus);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;_Document&lt;/span&gt;)wordDoc).Close(!dummySave,&amp;nbsp;objMissing,&amp;nbsp;objMissing);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordDoc&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//Log&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;message;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(numChanged&amp;nbsp;&amp;gt;&amp;nbsp;0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Matches&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;(dummySave&amp;nbsp;?&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;intercepted&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;successfully&amp;nbsp;replaced&quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;else&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;No&amp;nbsp;match&amp;nbsp;found&quot;&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;SearchAndReplaceResult&lt;/span&gt;(wordFile.Name,&amp;nbsp;numChanged,&amp;nbsp;message);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&amp;nbsp;MakeChangesWithinShapes(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Application&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Document&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Shapes&lt;/span&gt;&amp;nbsp;wordShapes,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;searchText,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;replaceText,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchCase,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchWholeWord,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchWildcard,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchSoundsLike,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchAllWordForms,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;dummySave)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&amp;nbsp;numChanged&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;wordShapes.Count;&amp;nbsp;i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;object&lt;/span&gt;&amp;nbsp;idx&amp;nbsp;=&amp;nbsp;i&amp;nbsp;+&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Shape&lt;/span&gt;&amp;nbsp;wordShape&amp;nbsp;=&amp;nbsp;wordShapes.get_Item(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;idx);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(wordShape.Type&amp;nbsp;==&amp;nbsp;Microsoft.Office.Core.&lt;span style=&quot;color: #2b91af;&quot;&gt;MsoShapeType&lt;/span&gt;.msoTextBox)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordShape.TextFrame.TextRange.Select();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numChanged&amp;nbsp;+=&amp;nbsp;MakeChanges(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;searchText,&amp;nbsp;replaceText,&amp;nbsp;matchCase,&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;dummySave);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;&amp;nbsp;numChanged;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&amp;nbsp;MakeChanges(&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Application&lt;/span&gt;&amp;nbsp;wordApp,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;ref&lt;/span&gt;&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Document&lt;/span&gt;&amp;nbsp;wordDoc,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;searchText,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;replaceText,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchCase,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchWholeWord,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchWildcard,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchSoundsLike,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;matchAllWordForms,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;dummySave)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//Make&amp;nbsp;dummy&amp;nbsp;change&amp;nbsp;to&amp;nbsp;get&amp;nbsp;count&amp;nbsp;first&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.WholeStory();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&amp;nbsp;numCharsBefore&amp;nbsp;=&amp;nbsp;wordApp.Selection.Characters.Count;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;&amp;nbsp;tempReplaceText&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;@&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;searchText;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.Find.Execute(searchText,&amp;nbsp;matchCase,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;objTrue,&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdFindWrap&lt;/span&gt;.wdFindContinue,&amp;nbsp;objMissing,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tempReplaceText,&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdReplace&lt;/span&gt;.wdReplaceAll,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objMissing,&amp;nbsp;objMissing,&amp;nbsp;objMissing,&amp;nbsp;objMissing);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.WholeStory();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&amp;nbsp;numCharsAfter&amp;nbsp;=&amp;nbsp;wordApp.Selection.Characters.Count;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&amp;nbsp;numChanged&amp;nbsp;=&amp;nbsp;numCharsAfter&amp;nbsp;-&amp;nbsp;numCharsBefore;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//Undo&amp;nbsp;changes&amp;nbsp;if&amp;nbsp;dummy&amp;nbsp;mode&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(dummySave)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordDoc.Undo();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordDoc.UndoClear();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//Make&amp;nbsp;actual&amp;nbsp;change&amp;nbsp;if&amp;nbsp;otherwise&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;else&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordApp.Selection.Find.Execute(tempReplaceText,&amp;nbsp;matchCase,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;matchWholeWord,&amp;nbsp;matchWildcard,&amp;nbsp;matchSoundsLike,&amp;nbsp;matchAllWordForms,&amp;nbsp;objTrue,&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdFindWrap&lt;/span&gt;.wdFindContinue,&amp;nbsp;objMissing,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;replaceText,&amp;nbsp;Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;WdReplace&lt;/span&gt;.wdReplaceAll,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objMissing,&amp;nbsp;objMissing,&amp;nbsp;objMissing,&amp;nbsp;objMissing);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;&amp;nbsp;numChanged;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;gt;&amp;nbsp;GetTrackChangeStatus(Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Document&lt;/span&gt;&amp;nbsp;wordDoc)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;gt;&amp;nbsp;trackChangeStatus&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trackChangeStatus.Add(wordDoc.TrackMoves);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trackChangeStatus.Add(wordDoc.TrackFormatting);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trackChangeStatus.Add(wordDoc.TrackRevisions);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;&amp;nbsp;trackChangeStatus;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt;&amp;nbsp;SetTrackChangeStatus(Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Document&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;gt;&amp;nbsp;trackChangeStatus)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordDoc.TrackMoves&amp;nbsp;=&amp;nbsp;trackChangeStatus[0];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordDoc.TrackFormatting&amp;nbsp;=&amp;nbsp;trackChangeStatus[1];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordDoc.TrackRevisions&amp;nbsp;=&amp;nbsp;trackChangeStatus[2];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt;&amp;nbsp;SetTrackChangeStatus(Word.&lt;span style=&quot;color: #2b91af;&quot;&gt;Document&lt;/span&gt;&amp;nbsp;wordDoc,&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;trackChangeStatus)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordDoc.TrackMoves&amp;nbsp;=&amp;nbsp;trackChangeStatus;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordDoc.TrackFormatting&amp;nbsp;=&amp;nbsp;trackChangeStatus;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wordDoc.TrackRevisions&amp;nbsp;=&amp;nbsp;trackChangeStatus;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}
&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/3349296372458969477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2011/07/c-mass-search-and-replace-word.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3349296372458969477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3349296372458969477'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2011/07/c-mass-search-and-replace-word.html' title='C#: Mass search and replace text in Word documents'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-7813173629479010520</id><published>2011-06-29T15:13:00.006-04:00</published><updated>2011-06-30T10:23:23.895-04:00</updated><title type='text'>JavaScript: Popups</title><content type='html'>This is a sample HTML that launches 4 different types of javascript popups, in the old style.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: white; color: black; font-family: Consolas;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;pre style=&quot;background: white; color: black; font-family: Consolas;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;DOCTYPE&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;html&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;PUBLIC&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&quot;-//W3C//DTD&amp;nbsp;XHTML&amp;nbsp;1.0&amp;nbsp;Transitional//EN&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;html&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;http://www.w3.org/1999/xhtml&quot;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;script&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: darkgreen;&quot;&gt;//&amp;nbsp;***&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: darkgreen;&quot;&gt;//&amp;nbsp;Displays&amp;nbsp;a&amp;nbsp;non-sized&amp;nbsp;non-modal&amp;nbsp;popup&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: darkgreen;&quot;&gt;//&amp;nbsp;***&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;function&lt;/span&gt;&amp;nbsp;popup(url)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;day&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Date();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id&amp;nbsp;=&amp;nbsp;day.getTime();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eval(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;page&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;id&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;&amp;nbsp;=&amp;nbsp;window.open(url,&amp;nbsp;&#39;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;id&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;&#39;,&amp;nbsp;&#39;toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1&#39;);&quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: darkgreen;&quot;&gt;//&amp;nbsp;***&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: darkgreen;&quot;&gt;//&amp;nbsp;Displays&amp;nbsp;a&amp;nbsp;sized&amp;nbsp;non-modal&amp;nbsp;popup&amp;nbsp;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: darkgreen;&quot;&gt;//&amp;nbsp;***&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;function&lt;/span&gt;&amp;nbsp;popupSized(url,&amp;nbsp;width,&amp;nbsp;height)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;day&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Date();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id&amp;nbsp;=&amp;nbsp;day.getTime();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xwidth&amp;nbsp;=&amp;nbsp;width;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xheight&amp;nbsp;=&amp;nbsp;height;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xleft&amp;nbsp;=&amp;nbsp;(screen.width&amp;nbsp;-&amp;nbsp;xwidth)&amp;nbsp;/&amp;nbsp;2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xtop&amp;nbsp;=&amp;nbsp;(screen.height&amp;nbsp;-&amp;nbsp;xheight)&amp;nbsp;/&amp;nbsp;2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eval(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;page&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;id&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;&amp;nbsp;=&amp;nbsp;window.open(url,&amp;nbsp;&#39;&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;id&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;&#39;,&amp;nbsp;&#39;height=&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;xheight&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;,width=&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;xwidth&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;,left=&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;xleft&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;,top=&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;xtop&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;,toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0&#39;);&quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: darkgreen;&quot;&gt;//&amp;nbsp;***&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: darkgreen;&quot;&gt;//&amp;nbsp;Displays&amp;nbsp;a&amp;nbsp;non-sized&amp;nbsp;modal&amp;nbsp;popup&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: darkgreen;&quot;&gt;//&amp;nbsp;***&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;function&lt;/span&gt;&amp;nbsp;popupModal(url)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;day&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Date();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id&amp;nbsp;=&amp;nbsp;day.getTime();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;windowOptions&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&#39;edge:&amp;nbsp;Raised;&amp;nbsp;center:&amp;nbsp;yes;&amp;nbsp;resizable:&amp;nbsp;no;&amp;nbsp;maximize:no;&amp;nbsp;minimize:yes;&amp;nbsp;status:&amp;nbsp;no;&amp;nbsp;scroll:&amp;nbsp;no;&amp;nbsp;help:&amp;nbsp;no&#39;&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt;&amp;nbsp;rc&amp;nbsp;=&amp;nbsp;window.showModalDialog(url,&amp;nbsp;id,&amp;nbsp;windowOptions);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;&amp;nbsp;rc;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: darkgreen;&quot;&gt;//&amp;nbsp;***&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: darkgreen;&quot;&gt;//&amp;nbsp;Displays&amp;nbsp;a&amp;nbsp;sized&amp;nbsp;modal&amp;nbsp;popup&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: darkgreen;&quot;&gt;//&amp;nbsp;***&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;function&lt;/span&gt;&amp;nbsp;popupModalSized(url,&amp;nbsp;width,&amp;nbsp;height)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;day&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Date();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id&amp;nbsp;=&amp;nbsp;day.getTime();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xwidth&amp;nbsp;=&amp;nbsp;width;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xheight&amp;nbsp;=&amp;nbsp;height;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xleft&amp;nbsp;=&amp;nbsp;(screen.width&amp;nbsp;-&amp;nbsp;width)&amp;nbsp;/&amp;nbsp;2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xtop&amp;nbsp;=&amp;nbsp;(screen.height&amp;nbsp;-&amp;nbsp;height)&amp;nbsp;/&amp;nbsp;2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;windowOptions&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&#39;dialogWidth:&#39;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;xwidth&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&#39;px;&amp;nbsp;dialogHeight:&#39;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;xheight&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&#39;px;&amp;nbsp;dialogLeft:&#39;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;xleft&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&#39;px;&amp;nbsp;dialogTop:&#39;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;xtop&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&#39;px;&amp;nbsp;edge:&amp;nbsp;Raised;&amp;nbsp;center:&amp;nbsp;yes;&amp;nbsp;resizable:&amp;nbsp;no;&amp;nbsp;maximize:no;&amp;nbsp;minimize:yes;&amp;nbsp;status:&amp;nbsp;no;&amp;nbsp;scroll:&amp;nbsp;no;&amp;nbsp;help:&amp;nbsp;no&#39;&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt;&amp;nbsp;rc&amp;nbsp;=&amp;nbsp;window.showModalDialog(url,&amp;nbsp;id,&amp;nbsp;windowOptions);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;&amp;nbsp;rc;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;function&lt;/span&gt;&amp;nbsp;btnSimplePopup_onclick()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;popup(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;http://www.google.com&quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;function&lt;/span&gt;&amp;nbsp;btnPopupSized_onclick()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;popupSized(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;http://www.google.com&quot;&lt;/span&gt;,&amp;nbsp;200,&amp;nbsp;100);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;function&lt;/span&gt;&amp;nbsp;btnPopupModal_onclick()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.getElementById(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;txtPopupModal&quot;&lt;/span&gt;).value&amp;nbsp;=&amp;nbsp;popupModal(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;ModalPopup.htm&quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;function&lt;/span&gt;&amp;nbsp;btnPopupModalSized_onclick()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.getElementById(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;txtPopupModalSized&quot;&lt;/span&gt;).value&amp;nbsp;=&amp;nbsp;popupModalSized(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;ModalPopup.htm&quot;&lt;/span&gt;,&amp;nbsp;300,&amp;nbsp;200);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;input&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;btnPopup&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;button&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;Simple&amp;nbsp;Popup&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;onclick&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;return&amp;nbsp;btnSimplePopup_onclick()&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;input&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;btnPopupSized&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;button&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;Sized&amp;nbsp;Simple&amp;nbsp;Popup&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;onclick&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;return&amp;nbsp;btnPopupSized_onclick()&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;input&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;btnPopupModal&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;button&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;Modal&amp;nbsp;Popup&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;onclick&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;return&amp;nbsp;btnPopupModal_onclick()&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;&amp;amp;nbsp;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Return&amp;nbsp;value
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;input&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;txtPopupModal&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;text&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;input&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;btnPopupModalSized&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;button&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;Sized&amp;nbsp;Modal&amp;nbsp;Popup&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;onclick&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;return&amp;nbsp;btnPopupModalSized_onclick()&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;&amp;amp;nbsp;&lt;/span&gt;&amp;nbsp;Return&amp;nbsp;value
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;input&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;txtPopupModalSized&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;text&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style=&quot;background: white; color: black; font-family: Consolas;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; color: black; font-family: Consolas; font-size: 13px;&quot;&gt;The second two popups open a window that sets the value of window.returnValue before closing itself using window.close so that the returned value is set on a text control. Here is&amp;nbsp;the example code of &quot;ModalPopup.htm&quot;:&lt;/div&gt;&lt;div style=&quot;background: white; color: black; font-family: Consolas; font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; color: black; font-family: Consolas;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;background: white; color: black; font-family: Consolas;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;Modal&amp;nbsp;Popup&amp;nbsp;Window&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;script&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;function&lt;/span&gt;&amp;nbsp;CloseWindow()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.returnValue&amp;nbsp;=&amp;nbsp;document.getElementById(&lt;span style=&quot;color: maroon;&quot;&gt;&quot;txtReturn&quot;&lt;/span&gt;).value;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.close();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Simple&amp;nbsp;Modal&amp;nbsp;Popup&amp;nbsp;Page
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;br&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;br&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Return&amp;nbsp;text
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;input&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;txtReturn&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;text&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;br&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;br&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;input&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;btnConfirm&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;button&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;Close&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;onclick&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&quot;CloseWindow()&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/7813173629479010520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2011/06/javascript-popups.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/7813173629479010520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/7813173629479010520'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2011/06/javascript-popups.html' title='JavaScript: Popups'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-4877681837673686237</id><published>2011-04-26T09:14:00.000-04:00</published><updated>2011-06-07T14:51:53.952-04:00</updated><title type='text'>JavaScript: Maintain scroll position of page along with individual elements within</title><content type='html'>Prior to ASP .Net 2.0, page scroll position could be saved using a popular Javascript technique by storing the scroll position of the page to a cookie, and later re-scrolling the page after postback by reading the cookie. ASP .Net 2.0 reduced this extra work needed by developers by adding a new page directive called MaintainScrollPositionOnPostback. By setting this to &quot;true&quot;, relatively &#39;simpler&#39; web pages would automatically scroll to the position that they were in before the page posted back. However this technique does not work well in MasterPage-ContentPage scenarios where there are multiple updatepanels hosting multiple AJAX controls and so on. Moreover, this does not solve a common problem where one might want to save scroll position of individual scrollable controls within the page itself (textboxes etc.). &lt;br /&gt;&lt;br /&gt;So this is my &#39;cadillac&#39; version of scroll saver Javascript.&lt;br /&gt;&lt;br /&gt;Note: The main script itself does NOT use jQuery, but in order to wire this up like mentioned below, you would need to reference jQuery.js.&lt;br /&gt;&lt;br /&gt;Step 1. Call saveScroll() method from body onunload of Master page:&lt;br /&gt;&lt;br /&gt;body onunload=&quot;return saveScroll();&quot;&lt;br /&gt;&lt;br /&gt;Step 2. Call loadScroll() from individual Content pages (the reason I use window.setTimeout is to make sure all AJAX controls are done with their required to-dos before the scrolling can start):&lt;br /&gt;&lt;br /&gt;$(document).ready(function () {&lt;br /&gt;    window.setTimeout(&quot;loadScroll()&quot;, 0);&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;Step 3. Finally this is the actual script that you can put in your own javascript file or just embed within the head of master page.&lt;br /&gt;&lt;br /&gt;Note: If you want to skip steps 1 and 2 above and do not mind storing scroll positions for ALL pages and have no other window.onunload&#39;s or window.setTimeOut&#39;s anywhere else, just add the following snippet at the top of the main script:&lt;br /&gt;&lt;br /&gt;$(document).ready(function () {&lt;br /&gt;    window.setTimeout(&quot;loadScroll()&quot;, 0);&lt;br /&gt;    window.onunload = function () { return saveScroll() };&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;And here&#39;s the main script:&lt;br /&gt;&lt;br /&gt;//Standard delimiters in the cookie, change to your taste :-)&lt;br /&gt;var d1 = &#39;=&#39;;&lt;br /&gt;var d2 = &#39;|&#39;;&lt;br /&gt;var d3 = &#39;^&#39;;&lt;br /&gt;&lt;br /&gt;function loadScroll(scrollElements) {&lt;br /&gt;    var cookieList = document.cookie.split(&#39;;&#39;);&lt;br /&gt;    for (var i = 0; i &lt; cookieList.length; i++) {&lt;br /&gt;        var cookieParts = cookieList[i].split(d1);&lt;br /&gt;        if (cookieParts[0] == &#39;scrollPosition&#39;) {&lt;br /&gt;            var values = unescape(cookieParts[1]).split(d3);&lt;br /&gt;            for (var j = 0; j &lt; values.length; j++) {&lt;br /&gt;                var currentValue = values[j].split(d2);&lt;br /&gt;                try {&lt;br /&gt;                    if (currentValue[0] == &#39;window&#39; &amp;&amp; currentValue[1] != getPageName())&lt;br /&gt;                        return;&lt;br /&gt;&lt;br /&gt;                    if (currentValue[0] == &#39;window&#39;) {&lt;br /&gt;                        window.scrollTo(currentValue[2], currentValue[3]);&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                    if (currentValue[0] == &#39;element&#39;) {&lt;br /&gt;                        var elm = document.getElementById(currentValue[1]);&lt;br /&gt;                        elm.scrollLeft = currentValue[2];&lt;br /&gt;                        elm.scrollTop = currentValue[3];&lt;br /&gt;                    }&lt;br /&gt;                } catch (ex) { }&lt;br /&gt;            }&lt;br /&gt;            return;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function saveScroll() {&lt;br /&gt;    var s = &#39;scrollPosition&#39; + d1;&lt;br /&gt;    var wl, wt;&lt;br /&gt;    if (window.pageXOffset !== undefined) {&lt;br /&gt;        wl = window.pageXOffset;&lt;br /&gt;        wt = window.pageYOffset;&lt;br /&gt;    } else if (document.documentElement &amp;&amp; document.documentElement.scrollLeft !== undefined) {&lt;br /&gt;        wl = document.documentElement.scrollLeft;&lt;br /&gt;        wt = document.documentElement.scrollTop;&lt;br /&gt;    } else {&lt;br /&gt;        wl = document.body.scrollLeft;&lt;br /&gt;        wt = document.body.scrollTop;&lt;br /&gt;    }&lt;br /&gt;    if (wl != undefined || wt != undefined) {&lt;br /&gt;        s += &#39;window&#39; + d2 + getPageName() + d2 + wl + d2 + wt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //Save absolute scroll position of individual page elements if you would like&lt;br /&gt;    //WARNING: If page has lot of elements (grids etc.), this may cause some delay, so you might want to comment the line below&lt;br /&gt;    s = saveIndividualScrolls(s);&lt;br /&gt;&lt;br /&gt;    document.cookie = s + &#39;;&#39;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function getPageName() {&lt;br /&gt;    var pathName = window.location.pathname;&lt;br /&gt;    return pathName.substring(pathName.lastIndexOf(&#39;/&#39;) + 1);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function saveIndividualScrolls(s) {&lt;br /&gt;    var elements = (document.all) ? document.all : document.getElementsByTagName(&#39;*&#39;);&lt;br /&gt;    for (var i = 0; i &lt; elements.length; i++) {&lt;br /&gt;        var e = elements[i];&lt;br /&gt;        if (e.id &amp;&amp; (e.scrollLeft || e.scrollTop)) {&lt;br /&gt;            s += d3 + &#39;element&#39; + d2 + e.id + d2 + e.scrollLeft + d2 + e.scrollTop;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return s;&lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/4877681837673686237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2011/04/javascript-maintain-scroll-position-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/4877681837673686237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/4877681837673686237'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2011/04/javascript-maintain-scroll-position-of.html' title='JavaScript: Maintain scroll position of page along with individual elements within'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-3068351739645707459</id><published>2011-01-11T09:56:00.002-05:00</published><updated>2011-07-14T11:18:30.277-04:00</updated><title type='text'>C#: Serialize an ASP WebControl</title><content type='html'>In one of my other posts I offered a solution to be able to serialize an object (pretty much any object) into string (&lt;a href=&quot;http://kodesharp.blogspot.com/2009/10/c-serialize-object-to-xml-string.html&quot;&gt;http://kodesharp.blogspot.com/2009/10/c-serialize-object-to-xml-string.html&lt;/a&gt;). However that method does not work for web controls as there are more to the object like viewstate etc. So this method needs to be used instead, for being able to serialize WebControls:&lt;br /&gt;
&lt;br /&gt;
public static string GetSerializedXmlStringForWebControls(WebControl webControl)&lt;br /&gt;
{&lt;br /&gt;
StringBuilder sb = new StringBuilder();&lt;br /&gt;
HtmlTextWriter tw = new HtmlTextWriter(new StringWriter(sb));&lt;br /&gt;
webControl.RenderControl(tw);&lt;br /&gt;
return tw.InnerWriter.ToString();&lt;br /&gt;
}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/3068351739645707459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2011/01/c-serialize-asp-webcontrol.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3068351739645707459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3068351739645707459'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2011/01/c-serialize-asp-webcontrol.html' title='C#: Serialize an ASP WebControl'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-4517781646301081514</id><published>2011-01-05T12:19:00.000-05:00</published><updated>2011-06-07T14:51:53.952-04:00</updated><title type='text'>C#: Find all ContentControls in a Word document</title><content type='html'>public static List&lt;word.contentcontrol&gt; GetAllContentControls(ref Word.Document document)&lt;br /&gt;{&lt;br /&gt;List&lt;word.contentcontrol&gt; ccArray = new List&lt;microsoft.office.interop.word.contentcontrol&gt;();&lt;br /&gt;//Body&lt;br /&gt;for (int i = 1; i &lt; document.ContentControls.Count + 1; i++)&lt;br /&gt;{&lt;br /&gt;object objIdx = i;&lt;br /&gt;ccArray.Add(document.ContentControls.get_Item(ref objIdx));&lt;br /&gt;}&lt;br /&gt;//Headers&lt;br /&gt;foreach (Word.Section section in document.Sections)&lt;br /&gt;{&lt;br /&gt;for (int i = 1; i &lt; section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages].Range.ContentControls.Count + 1; i++)&lt;br /&gt;{&lt;br /&gt;object objIdx = i;&lt;br /&gt;ccArray.Add(section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages].Range.ContentControls.get_Item(ref objIdx));&lt;br /&gt;}&lt;br /&gt;for (int i = 1; i &lt; section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Range.ContentControls.Count + 1; i++)&lt;br /&gt;{&lt;br /&gt;object objIdx = i;&lt;br /&gt;ccArray.Add(section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Range.ContentControls.get_Item(ref objIdx));&lt;br /&gt;}&lt;br /&gt;for (int i = 1; i &lt; section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.ContentControls.Count + 1; i++)&lt;br /&gt;{&lt;br /&gt;object objIdx = i;&lt;br /&gt;ccArray.Add(section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.ContentControls.get_Item(ref objIdx));&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;//Footers&lt;br /&gt;foreach (Word.Section section in document.Sections)&lt;br /&gt;{&lt;br /&gt;for (int i = 1; i &lt; section.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages].Range.ContentControls.Count + 1; i++)&lt;br /&gt;{&lt;br /&gt;object objIdx = i;&lt;br /&gt;ccArray.Add(section.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages].Range.ContentControls.get_Item(ref objIdx));&lt;br /&gt;}&lt;br /&gt;for (int i = 1; i &lt; section.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Range.ContentControls.Count + 1; i++)&lt;br /&gt;{&lt;br /&gt;object objIdx = i;&lt;br /&gt;ccArray.Add(section.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage].Range.ContentControls.get_Item(ref objIdx));&lt;br /&gt;}&lt;br /&gt;for (int i = 1; i &lt; section.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.ContentControls.Count + 1; i++)&lt;br /&gt;{&lt;br /&gt;object objIdx = i;&lt;br /&gt;ccArray.Add(section.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.ContentControls.get_Item(ref objIdx));&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;//Textboxes&lt;br /&gt;for (int j = 1; j &lt; document.Shapes.Count + 1; j++)&lt;br /&gt;{&lt;br /&gt;object idx = j;&lt;br /&gt;Word.Shape shape = document.Shapes.get_Item(ref idx);&lt;br /&gt;if (shape.Type == Microsoft.Office.Core.MsoShapeType.msoTextBox)&lt;br /&gt;{&lt;br /&gt;Word.ContentControls contentControls = shape.TextFrame.TextRange.ContentControls;&lt;br /&gt;for (int i = 1; i &lt; contentControls.Count + 1; i++)&lt;br /&gt;{&lt;br /&gt;object objIdx = i;&lt;br /&gt;ccArray.Add(contentControls.get_Item(ref objIdx));&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return ccArray;&lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/4517781646301081514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2011/01/c-find-all-contentcontrols-in-word.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/4517781646301081514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/4517781646301081514'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2011/01/c-find-all-contentcontrols-in-word.html' title='C#: Find all ContentControls in a Word document'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-3735724762470084534</id><published>2010-12-20T12:03:00.001-05:00</published><updated>2011-07-14T11:18:39.215-04:00</updated><title type='text'>C#: Clone HtmlControl</title><content type='html'>HtmlControl does not inherit ICloneable. So this method mimic&#39;s what&#39;s missing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
private HtmlControl CopyControl(HtmlControl sourceControl, Dictionary&lt;string,&gt; controlAttributes, string suffix)&lt;br /&gt;
{&lt;br /&gt;
Type controlType = sourceControl.GetType();&lt;br /&gt;
HtmlControl targetControl = (HtmlControl)controlType.InvokeMember(String.Empty, BindingFlags.CreateInstance, null, null, null);&lt;br /&gt;
targetControl.Attributes.Clear();&lt;br /&gt;
foreach (PropertyInfo propertyInfo in controlType.GetProperties())&lt;br /&gt;
{&lt;br /&gt;
if (propertyInfo.CanWrite)&lt;br /&gt;
{&lt;br /&gt;
if (propertyInfo.Name == &quot;ID&quot;)&lt;br /&gt;
{&lt;br /&gt;
targetControl.ID = targetControl.TagName + suffix;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
if (controlType.Name == &quot;HtmlSelect&quot;)&lt;br /&gt;
{&lt;br /&gt;
//For HtmlSelect&#39;s, InnerText or InnerHtml can not be modified&lt;br /&gt;
//So ignore one, and use the other one for adding the individual items&lt;br /&gt;
if (propertyInfo.ToString() == &quot;System.String InnerText&quot;)&lt;br /&gt;
continue;&lt;br /&gt;
else if (propertyInfo.ToString() == &quot;System.String InnerHtml&quot;)&lt;br /&gt;
{&lt;br /&gt;
HtmlSelect sc = (HtmlSelect)sourceControl;&lt;br /&gt;
HtmlSelect tc = (HtmlSelect)targetControl;&lt;br /&gt;
foreach (var item in sc.Items)&lt;br /&gt;
{&lt;br /&gt;
tc.Items.Add(item.ToString());&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
propertyInfo.SetValue(targetControl, propertyInfo.GetValue(sourceControl, null), null);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
propertyInfo.SetValue(targetControl, propertyInfo.GetValue(sourceControl, null), null);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/3735724762470084534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2010/12/c-clone-htmlcontrol.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3735724762470084534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3735724762470084534'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2010/12/c-clone-htmlcontrol.html' title='C#: Clone HtmlControl'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-3123798298279818353</id><published>2010-12-07T14:24:00.001-05:00</published><updated>2011-07-14T11:18:48.090-04:00</updated><title type='text'>C#: Transform XML using XSL</title><content type='html'>I love strings, so I am going to use all in&#39;s and out&#39;s as strings. The &quot;reading from file&quot; part can be taken care of in the application code... so as to reduce IO overhead in this method itself.&lt;br /&gt;
&lt;br /&gt;
WARNING: By the way this only works for simple &#39;standalone&#39; XSL transforms. For chained XSLs (where main XSL includes additional XSL&#39;s using the &lt;include href=&quot;blah.xsl&quot;&gt;syntax) it would not work and may get an IO exception while trying to load &quot;blah.xsl&quot; unless that file is also present in the executing folder.&lt;br /&gt;
&lt;br /&gt;
public string TransformXml(string xml, string xsl)&lt;br /&gt;
{&lt;br /&gt;
string responseXml = string.Empty;&lt;br /&gt;
//Read XML&lt;br /&gt;
TextReader iXmlReader = new StringReader(xml);&lt;br /&gt;
XmlTextReader iXmlText = new XmlTextReader(iXmlReader);&lt;br /&gt;
XPathDocument iXPathDocument = new XPathDocument(iXmlText);&lt;br /&gt;
&lt;br /&gt;
//Read XSL&lt;br /&gt;
TextReader iXslReader = new StringReader(xsl);&lt;br /&gt;
XmlTextReader iXslText = new XmlTextReader(iXslReader);&lt;br /&gt;
&lt;br /&gt;
//Get ready&lt;br /&gt;
XslTransform xslt = new XslTransform();&lt;br /&gt;
xslt.Load(iXslText);&lt;br /&gt;
StringBuilder sb = new StringBuilder();&lt;br /&gt;
TextWriter tw = new StringWriter(sb);&lt;br /&gt;
&lt;br /&gt;
//Transform&lt;br /&gt;
xslt.Transform(iXPathDocument, null, tw);&lt;br /&gt;
responseXml = sb.ToString();&lt;br /&gt;
&lt;br /&gt;
return responseXml;&lt;br /&gt;
}&lt;/include&gt;</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/3123798298279818353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2010/12/c-transform-xml-using-xsl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3123798298279818353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3123798298279818353'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2010/12/c-transform-xml-using-xsl.html' title='C#: Transform XML using XSL'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-1950144269088497403</id><published>2010-12-02T08:46:00.001-05:00</published><updated>2011-07-14T11:19:06.552-04:00</updated><title type='text'>C#: Deserialize Xml (string) to an Object</title><content type='html'>A while back I posted an entry to be able to simply Serialize an object into Xml. Now it is time to do the reverse. Not sure if this will work for all types of complex objects but I have not received any errors so far. Of course, it would be a good idea for the calling program to cast the returned object appropriately.&lt;br /&gt;
&lt;br /&gt;
public static object DeserializeXml(string xml, System.Type objectType)&lt;br /&gt;
{&lt;br /&gt;
byte[] byteArray = Encoding.ASCII.GetBytes(xml);&lt;br /&gt;
MemoryStream memoryStream = new MemoryStream(byteArray);&lt;br /&gt;
XmlSerializer xmlSerializer = new XmlSerializer(objectType);&lt;br /&gt;
Object obj = xmlSerializer.Deserialize(memoryStream);&lt;br /&gt;
memoryStream.Close();&lt;br /&gt;
return obj;&lt;br /&gt;
}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/1950144269088497403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2010/12/c-deserialize-xml-string-to-object.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/1950144269088497403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/1950144269088497403'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2010/12/c-deserialize-xml-string-to-object.html' title='C#: Deserialize Xml (string) to an Object'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-3076449558744641272</id><published>2010-09-09T11:36:00.000-04:00</published><updated>2011-06-07T14:51:53.953-04:00</updated><title type='text'>C#: Sort DropDownList</title><content type='html'>public void SortDropDownList(ref DropDownList ddl)&lt;br /&gt;{&lt;br /&gt;DropDownList ddlClone = new DropDownList();&lt;br /&gt;foreach (ListItem item in ddl.Items)&lt;br /&gt;{&lt;br /&gt;ddlClone.Items.Add(item);&lt;br /&gt;}&lt;br /&gt;var query = ddlClone.Items.Cast&lt;listitem&gt;().OrderBy(o =&gt; o.Text);&lt;br /&gt;ddl.Items.Clear();&lt;br /&gt;foreach (var item in query)&lt;br /&gt;{&lt;br /&gt;ddl.Items.Add(item);&lt;br /&gt;}&lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/3076449558744641272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2010/09/c-sort-dropdownlist.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3076449558744641272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3076449558744641272'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2010/09/c-sort-dropdownlist.html' title='C#: Sort DropDownList'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-1817341158179000908</id><published>2009-10-09T09:13:00.000-04:00</published><updated>2011-06-07T14:51:53.953-04:00</updated><title type='text'>C#: Serialize an object to Xml (string)</title><content type='html'>Especially useful if the object is not inheriting the [Serializable] attribute...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;string GetSerializedXmlString(object obj)&lt;br /&gt;{&lt;br /&gt;MemoryStream memoryStream = new MemoryStream();&lt;br /&gt;System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(obj.GetType());&lt;br /&gt;XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);&lt;br /&gt;xmlSerializer.Serialize(xmlTextWriter, obj);&lt;br /&gt;memoryStream = (MemoryStream)xmlTextWriter.BaseStream;&lt;br /&gt;UTF8Encoding encoding = new UTF8Encoding();&lt;br /&gt;return encoding.GetString(memoryStream.ToArray());&lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/1817341158179000908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2009/10/c-serialize-object-to-xml-string.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/1817341158179000908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/1817341158179000908'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2009/10/c-serialize-object-to-xml-string.html' title='C#: Serialize an object to Xml (string)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-3817176687321038064</id><published>2009-09-17T09:58:00.000-04:00</published><updated>2011-06-07T14:51:53.953-04:00</updated><title type='text'>C#: Read content as byte[] from an URL</title><content type='html'>public byte[] GetUrlResponse(string contentUrl)&lt;br /&gt;{&lt;br /&gt;    WebClient request = new WebClient();&lt;br /&gt;    request.UseDefaultCredentials = true;&lt;br /&gt;    byte[] contentBytes = request.DownloadData(contentUrl);&lt;br /&gt;    return contentBytes;&lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/3817176687321038064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2009/09/c-read-content-as-byte-from-url.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3817176687321038064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3817176687321038064'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2009/09/c-read-content-as-byte-from-url.html' title='C#: Read content as byte[] from an URL'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-525179394693243743</id><published>2009-09-17T09:50:00.000-04:00</published><updated>2011-06-07T14:51:53.953-04:00</updated><title type='text'>C#: Stub code for writing ActiveX components</title><content type='html'>Here is the base code for writing the ActiveX component, this needs to be followed by instructions for setup etc. as documented &lt;a href=&#39;http://dotnetslackers.com/articles/csharp/WritingAnActiveXControlInCSharp.aspx&#39;&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;***********************&lt;br /&gt;Class: ActiveXDotNet.cs&lt;br /&gt;***********************&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;//Additionally added for ActiveX&lt;br /&gt;using System.Runtime.InteropServices;&lt;br /&gt;using System.ComponentModel;&lt;br /&gt;using System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;namespace NSActiveXDotNet&lt;br /&gt;{&lt;br /&gt;    [Guid(&quot;E86A9038-368D-4e8f-B389-FDEF38935B2F&quot;), InterfaceType(ComInterfaceType.InterfaceIsDual), ComVisible(true)]&lt;br /&gt;    public interface IActiveXDotNet&lt;br /&gt;    {&lt;br /&gt;        [DispId(1)]&lt;br /&gt;        void ShowDialog(string message);&lt;br /&gt;    };&lt;br /&gt;&lt;br /&gt;    [Guid(&quot;B769DA4B-FDDD-41BD-BDD2-7101D08E8E0C&quot;), ClassInterface(ClassInterfaceType.None),&lt;br /&gt;    ComDefaultInterface(typeof(IActiveXDotNet)), ComVisible(true), ProgId(&quot;ActiveXDotNet.CActiveXDotNet&quot;)]&lt;br /&gt;    public class CActiveXDotNet : IObjectSafetyImpl, IActiveXDotNet&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        #region IActiveXDotNet Members&lt;br /&gt;&lt;br /&gt;        public void ShowDialog(string message)&lt;br /&gt;        {&lt;br /&gt;            MessageBox.Show(message, &quot;Message From ActiveX&quot;, MessageBoxButtons.OK, MessageBoxIcon.Information);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        #endregion&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;***********************&lt;br /&gt;Class: IObjectSafety.cs&lt;br /&gt;***********************&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Runtime.InteropServices;&lt;br /&gt;using System.ComponentModel;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;namespace NSActiveXDotNet&lt;br /&gt;{&lt;br /&gt;    [&lt;br /&gt;        Serializable,&lt;br /&gt;        ComVisible(true)&lt;br /&gt;    ]&lt;br /&gt;    public enum ObjectSafetyOptions&lt;br /&gt;    {&lt;br /&gt;        INTERFACESAFE_FOR_UNTRUSTED_CALLER = 0x00000001,&lt;br /&gt;        INTERFACESAFE_FOR_UNTRUSTED_DATA = 0x00000002,&lt;br /&gt;        INTERFACE_USES_DISPEX = 0x00000004,&lt;br /&gt;        INTERFACE_USES_SECURITY_MANAGER = 0x00000008&lt;br /&gt;    };&lt;br /&gt;&lt;br /&gt;    //&lt;br /&gt;    // MS IObjectSafety Interface definition&lt;br /&gt;    //&lt;br /&gt;    [&lt;br /&gt;        ComImport(),&lt;br /&gt;        Guid(&quot;CB5BDC81-93C1-11CF-8F20-00805F2CD064&quot;),&lt;br /&gt;        InterfaceType(ComInterfaceType.InterfaceIsIUnknown)&lt;br /&gt;    ]&lt;br /&gt;    public interface IObjectSafety&lt;br /&gt;    {&lt;br /&gt;        [PreserveSig]&lt;br /&gt;        long GetInterfaceSafetyOptions(ref Guid iid, out int pdwSupportedOptions, out int pdwEnabledOptions);&lt;br /&gt;&lt;br /&gt;        [PreserveSig]&lt;br /&gt;        long SetInterfaceSafetyOptions(ref Guid iid, int dwOptionSetMask, int dwEnabledOptions);&lt;br /&gt;    };&lt;br /&gt;&lt;br /&gt;    //&lt;br /&gt;    // Provides a default Implementation for safe scripting.&lt;br /&gt;    // This basically means IE won&#39;t complain about the ActiveX object not being safe&lt;br /&gt;    //&lt;br /&gt;    public class IObjectSafetyImpl : IObjectSafety&lt;br /&gt;    {&lt;br /&gt;        private ObjectSafetyOptions m_options =&lt;br /&gt;            ObjectSafetyOptions.INTERFACESAFE_FOR_UNTRUSTED_CALLER |&lt;br /&gt;            ObjectSafetyOptions.INTERFACESAFE_FOR_UNTRUSTED_DATA;&lt;br /&gt;&lt;br /&gt;        #region [IObjectSafety implementation]&lt;br /&gt;        public long GetInterfaceSafetyOptions(ref Guid iid, out int pdwSupportedOptions, out int pdwEnabledOptions)&lt;br /&gt;        {&lt;br /&gt;            pdwSupportedOptions = (int)m_options;&lt;br /&gt;            pdwEnabledOptions = (int)m_options;&lt;br /&gt;            return 0;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public long SetInterfaceSafetyOptions(ref Guid iid, int dwOptionSetMask, int dwEnabledOptions)&lt;br /&gt;        {&lt;br /&gt;            return 0;&lt;br /&gt;        }&lt;br /&gt;        #endregion&lt;br /&gt;    };&lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/525179394693243743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2009/09/c-stub-code-for-writing-activex.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/525179394693243743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/525179394693243743'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2009/09/c-stub-code-for-writing-activex.html' title='C#: Stub code for writing ActiveX components'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-5388818956336826730</id><published>2009-09-17T09:46:00.000-04:00</published><updated>2011-06-07T14:51:53.953-04:00</updated><title type='text'>C#: Stream document to open within browser</title><content type='html'>Note: This is not full proof, flavor of browser and local settings would probably override things.&lt;br /&gt;&lt;br /&gt;void StreamDocumentInline(byte[] content, string mimeType)&lt;br /&gt;{&lt;br /&gt;Response.Clear();&lt;br /&gt;Response.Buffer = true;&lt;br /&gt;Response.AddHeader(&quot;Content-Length&quot;, content.Length.ToString());&lt;br /&gt;Response.AddHeader(&quot;Content-Type&quot;, mimeType);&lt;br /&gt;Response.AddHeader(&quot;Content-Disposition&quot;, &quot;inline&quot;);&lt;br /&gt;Response.BinaryWrite(content);&lt;br /&gt;Response.Flush();&lt;br /&gt;Response.End();&lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/5388818956336826730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2009/09/c-stream-document-to-open-within.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/5388818956336826730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/5388818956336826730'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2009/09/c-stream-document-to-open-within.html' title='C#: Stream document to open within browser'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-9016014333225328763</id><published>2009-09-17T09:43:00.000-04:00</published><updated>2011-06-07T14:51:53.954-04:00</updated><title type='text'>C#: Stream document through browser to open in native application</title><content type='html'>void StreamDocumentToNativeApp (byte[] content, string fileName, string mimeType)&lt;br /&gt;{&lt;br /&gt;Response.Clear();&lt;br /&gt;Response.Buffer = true;&lt;br /&gt;Response.AddHeader(&quot;Content-Disposition&quot;, &quot;attachment;filename=&quot; + fileName);&lt;br /&gt;Response.AddHeader(&quot;Content-Length&quot;, content.Length.ToString());&lt;br /&gt;Response.AddHeader(&quot;Content-Type&quot;, mimeType); //Example application/text&lt;br /&gt;Response.BinaryWrite(content);&lt;br /&gt;Response.Flush();&lt;br /&gt;Response.End();&lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/9016014333225328763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2009/09/c-stream-document-through-browser-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/9016014333225328763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/9016014333225328763'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2009/09/c-stream-document-through-browser-to.html' title='C#: Stream document through browser to open in native application'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-8312830146432138122</id><published>2009-09-15T14:47:00.000-04:00</published><updated>2011-06-07T14:51:53.954-04:00</updated><title type='text'>C#: Efficiently (somewhat) deal with large ViewState</title><content type='html'>If you are REALLY worried about having the most efficient method of saving ViewState, you should be using the SQLStateServer approach. However if you want a quick hack that will work quite efficiently as long as you do not have hundreds and thousands of active users, you can continue reading this post. Needless to say, I am assuming you have turned EnableViewState to off for whatever controls you could (labels etc), and are concerned about only the ones where you must save the view state.&lt;br /&gt;&lt;br /&gt;OK here we go! As we know ASP .Net handles a Cache object (or even Session for that matter) much more efficiently than it does ViewState, just add these two methods in your code behind to save the ViewState to the server cache customized for the user, and restore from it later, in stead of putting it within the page itself.&lt;br /&gt;&lt;br /&gt;(Note: You might also consider using a Session object in stead of cache for that matter)&lt;br /&gt;&lt;br /&gt;//Just embed these two methods within the codebehind of the page&lt;br /&gt;#region Hack to save and restore ViewState to and from Cache&lt;br /&gt;protected override void SavePageStateToPersistenceMedium(object viewState)&lt;br /&gt;{&lt;br /&gt;    // Generate unique key for this viewstate&lt;br /&gt;    string stateToSave = &quot;VIEWSTATE#&quot; + Request.UserHostAddress + &quot;#&quot; + DateTime.Now.Ticks.ToString();&lt;br /&gt;    // Save viewstate data in cache&lt;br /&gt;    Cache.Add(stateToSave, viewState, null, DateTime.Now.AddMinutes(Session.Timeout), TimeSpan.Zero, CacheItemPriority.Default, null);&lt;br /&gt;    // Save key in a hidden field&lt;br /&gt;    ClientScript.RegisterHiddenField(&quot;__VIEWSTATE_KEY&quot;, stateToSave);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;protected override object LoadPageStateFromPersistenceMedium()&lt;br /&gt;{&lt;br /&gt;    // Load back viewstate from cache&lt;br /&gt;    string savedState = Request.Form[&quot;__VIEWSTATE_KEY&quot;];&lt;br /&gt;    // Check validity of viewstate key&lt;br /&gt;    if (!savedState.StartsWith(&quot;VIEWSTATE#&quot;))&lt;br /&gt;        throw new Exception(&quot;Invalid viewstate key:&quot; + savedState);&lt;br /&gt;    object savedCache = Cache[savedState];&lt;br /&gt;    // Cleanup the saved cache from server memory&lt;br /&gt;    Cache.Remove(savedState);&lt;br /&gt;    return savedCache;&lt;br /&gt;}&lt;br /&gt;#endregion</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/8312830146432138122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2009/09/c-efficiently-somewhat-deal-with-large.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/8312830146432138122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/8312830146432138122'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2009/09/c-efficiently-somewhat-deal-with-large.html' title='C#: Efficiently (somewhat) deal with large ViewState'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-5036555174573718606</id><published>2009-06-29T16:15:00.000-04:00</published><updated>2011-06-07T14:51:53.954-04:00</updated><title type='text'>C#: Write a file from an URL response</title><content type='html'>public void WriteFileContentsFromUrl(string contentUrl, string filePath)&lt;br /&gt;        {&lt;br /&gt;                WebClient request = new WebClient();&lt;br /&gt;                request.UseDefaultCredentials = true;&lt;br /&gt;                byte[] fileContent = request.DownloadData(contentUrl);&lt;br /&gt;                FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);&lt;br /&gt;                BinaryWriter bw = new BinaryWriter(fs);&lt;br /&gt;                bw.Write(fileContent);&lt;br /&gt;                bw.Close();&lt;br /&gt;        }</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/5036555174573718606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2009/06/c-write-file-from-url-response.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/5036555174573718606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/5036555174573718606'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2009/06/c-write-file-from-url-response.html' title='C#: Write a file from an URL response'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-2875449496982559865</id><published>2009-05-31T09:12:00.000-04:00</published><updated>2011-06-07T14:51:53.954-04:00</updated><title type='text'>C#: Execute Two Dependant Processes (2 Starts After 1 Finishes)</title><content type='html'>Gunjan asked about this in one of my other threads:&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Diagnostics;&lt;br /&gt;using System.Threading;&lt;br /&gt;&lt;br /&gt;namespace DriverApp&lt;br /&gt;{&lt;br /&gt;    class Program&lt;br /&gt;    {&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine(&quot;Press Enter to start Notepad (i.e. Process 1)&quot;);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;            Console.WriteLine(&quot;Starting Notepad...&quot;);&lt;br /&gt;            Thread t1 = new Thread(new ThreadStart(StartProcess1));&lt;br /&gt;            t1.Start();&lt;br /&gt;            while (t1.IsAlive == true)&lt;br /&gt;            {&lt;br /&gt;                System.Threading.Thread.Sleep(1000);&lt;br /&gt;            }&lt;br /&gt;            Console.WriteLine(&quot;Notepad Stopped. Starting MSPaint (i.e. Process 2)&quot;);&lt;br /&gt;            StartProcess2();&lt;br /&gt;            Console.WriteLine(&quot;MSPaint Stopped. Press Enter to Exit&quot;);&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        static void StartProcess1()&lt;br /&gt;        {&lt;br /&gt;            Process proc = new Process();&lt;br /&gt;            proc.StartInfo.FileName = &quot;Notepad.exe&quot;;&lt;br /&gt;            proc.Start();&lt;br /&gt;            Console.WriteLine(&quot;Notepad running...&quot;);&lt;br /&gt;            proc.WaitForExit();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        static void StartProcess2()&lt;br /&gt;        {&lt;br /&gt;            Process proc = new Process();&lt;br /&gt;            proc.StartInfo.FileName = &quot;MSPaint.exe&quot;;&lt;br /&gt;            proc.Start();&lt;br /&gt;            Console.WriteLine(&quot;MSPaint running...&quot;);&lt;br /&gt;            proc.WaitForExit();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/2875449496982559865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2009/05/c-execute-two-dependant-processes-2.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/2875449496982559865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/2875449496982559865'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2009/05/c-execute-two-dependant-processes-2.html' title='C#: Execute Two Dependant Processes (2 Starts After 1 Finishes)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-6203175574457100028</id><published>2009-04-10T09:42:00.000-04:00</published><updated>2011-06-07T14:51:53.954-04:00</updated><title type='text'>ASP.NET Security Impersonation CheatSheet</title><content type='html'>http://docs.google.com/Doc?id=ddwdxp4n_47gr85z9cr</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/6203175574457100028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2009/04/aspnet-security-impersonation.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/6203175574457100028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/6203175574457100028'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2009/04/aspnet-security-impersonation.html' title='ASP.NET Security Impersonation CheatSheet'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-3945705001744984224</id><published>2009-04-09T14:15:00.000-04:00</published><updated>2011-06-07T14:51:53.954-04:00</updated><title type='text'>C#: Create WindowsIdentity From UserID and Password</title><content type='html'>Important: The code must be compiled with /unsafe flag&lt;br /&gt;&lt;br /&gt;using System.Security;&lt;br /&gt;using System.Security.Principal;&lt;br /&gt;using System.Security.Permissions;&lt;br /&gt;using System.Runtime.InteropServices;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;        WindowsIdentity LogonUserAndGetWindowsIdentify(string userId, string password, string domainId)&lt;br /&gt;        {&lt;br /&gt;            IntPtr tokenHandle = new IntPtr(0);&lt;br /&gt;            IntPtr dupeTokenHandle = new IntPtr(0);&lt;br /&gt;            &lt;br /&gt;            tokenHandle = IntPtr.Zero;&lt;br /&gt;            dupeTokenHandle = IntPtr.Zero;&lt;br /&gt;&lt;br /&gt;            bool rcBool = LogonUser(userId, domainId, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);&lt;br /&gt;            if (!rcBool)&lt;br /&gt;                throw new Exception(&quot;Error while trying to log user on&quot;);&lt;br /&gt;&lt;br /&gt;            rcBool = DuplicateToken(tokenHandle, SecurityImpersonation, ref dupeTokenHandle);&lt;br /&gt;            if (!rcBool)&lt;br /&gt;                throw new Exception(&quot;Error while trying to duplicate token&quot;);&lt;br /&gt;&lt;br /&gt;            WindowsIdentity newId = new WindowsIdentity(dupeTokenHandle);&lt;br /&gt;&lt;br /&gt;            CloseHandle(tokenHandle);&lt;br /&gt;            CloseHandle(dupeTokenHandle);&lt;br /&gt;&lt;br /&gt;            return newId;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        [DllImport(&quot;kernel32.dll&quot;, CharSet = CharSet.Auto)]&lt;br /&gt;        public extern static bool CloseHandle(IntPtr handle);&lt;br /&gt;&lt;br /&gt;        [DllImport(&quot;kernel32.dll&quot;, CharSet = System.Runtime.InteropServices.CharSet.Auto)]&lt;br /&gt;        private unsafe static extern int FormatMessage(int dwFlags, ref IntPtr lpSource, int dwMessageId, int dwLanguageId, ref String lpBuffer, int nSize, IntPtr* Arguments);&lt;br /&gt;&lt;br /&gt;        [DllImport(&quot;advapi32.dll&quot;, SetLastError = true)]&lt;br /&gt;        public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);&lt;br /&gt;&lt;br /&gt;        [DllImport(&quot;advapi32.dll&quot;, CharSet = CharSet.Auto, SetLastError = true)]&lt;br /&gt;        public extern static bool DuplicateToken(IntPtr ExistingTokenHandle, int SECURITY_IMPERSONATION_LEVEL, ref IntPtr DuplicateTokenHandle);&lt;br /&gt;&lt;br /&gt;        public unsafe static string GetErrorMessage(int errorCode)&lt;br /&gt;        {&lt;br /&gt;            int FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100;&lt;br /&gt;            int FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200;&lt;br /&gt;            int FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000;&lt;br /&gt;&lt;br /&gt;            int messageSize = 255;&lt;br /&gt;            String lpMsgBuf = &quot;&quot;;&lt;br /&gt;            int dwFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS;&lt;br /&gt;&lt;br /&gt;            IntPtr ptrlpSource = IntPtr.Zero;&lt;br /&gt;            IntPtr prtArguments = IntPtr.Zero;&lt;br /&gt;&lt;br /&gt;            int retVal = FormatMessage(dwFlags, ref ptrlpSource, errorCode, 0, ref lpMsgBuf, messageSize, &amp;prtArguments);&lt;br /&gt;            if (0 == retVal)&lt;br /&gt;            {&lt;br /&gt;                throw new Exception(&quot;Failed to format message for error code &quot; + errorCode + &quot;. &quot;);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            return lpMsgBuf;&lt;br /&gt;        }</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/3945705001744984224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2009/04/c-create-windowsidentity-from-userid.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3945705001744984224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/3945705001744984224'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2009/04/c-create-windowsidentity-from-userid.html' title='C#: Create WindowsIdentity From UserID and Password'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-6096621252187890811</id><published>2009-03-16T11:18:00.000-04:00</published><updated>2011-06-07T14:51:53.955-04:00</updated><title type='text'>C#: Convert Non-Seekable Stream to Byte Array</title><content type='html'>byte[] ConvertNonSeekableStreamToByteArray(Stream NonSeekableStream)&lt;br /&gt;{&lt;br /&gt;    MemoryStream ms = new MemoryStream();&lt;br /&gt;    byte[] buffer = new byte[1024];&lt;br /&gt;    int bytes;&lt;br /&gt;    while ((bytes = NonSeekableStream.Read(buffer, 0, buffer.Length)) &gt; 0)&lt;br /&gt;    {&lt;br /&gt;        ms.Write(buffer, 0, bytes);&lt;br /&gt;    }&lt;br /&gt;    byte[] output = ms.ToArray();&lt;br /&gt;    return output;&lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/6096621252187890811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2009/03/c-convert-non-seekable-stream-to-byte.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/6096621252187890811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/6096621252187890811'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2009/03/c-convert-non-seekable-stream-to-byte.html' title='C#: Convert Non-Seekable Stream to Byte Array'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-6638805231392882706</id><published>2009-01-30T10:04:00.000-05:00</published><updated>2011-06-07T14:51:53.955-04:00</updated><title type='text'>C#: Generic Error Handling Routine (WinApp)</title><content type='html'>Just call the LogError method from any function within the catch block and pass the exception (ex) to this method...&lt;br /&gt;&lt;br /&gt;public static void LogError(Exception ex)&lt;br /&gt;{&lt;br /&gt;    string EventLogSourceName = &quot;Application Name&quot;;&lt;br /&gt;    int EventLogErrorCode = &quot;99&quot;;&lt;br /&gt;    string msg = &quot;The application encountered an unknown error:&quot;;&lt;br /&gt;    msg += &quot;\r\nExecuting Method: &quot; + new System.Diagnostics.StackFrame(1, false).GetMethod().Name;&lt;br /&gt;    msg += &quot;\r\nError Message: &quot; + ex.Message;&lt;br /&gt;&lt;br /&gt;    EventLog.WriteEntry(EventLogSourceName, msg, EventLogEntryType.Error, EventLogErrorCode);&lt;br /&gt;    MessageBox.Show(msg, &quot;ERROR&quot;, MessageBoxButtons.OKCancel, MessageBoxIcon.Error);&lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/6638805231392882706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2009/01/c-generic-error-handling-routine-winapp.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/6638805231392882706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/6638805231392882706'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2009/01/c-generic-error-handling-routine-winapp.html' title='C#: Generic Error Handling Routine (WinApp)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-5022115915314017309</id><published>2008-12-04T12:49:00.000-05:00</published><updated>2011-06-07T14:51:53.955-04:00</updated><title type='text'>C#: Calculate Statistics of a Word Document</title><content type='html'>//***&lt;br /&gt;//Label names are self Explanatory&lt;br /&gt;//Stats include content from FootNotes and EndNotes&lt;br /&gt;//Use objFalse = false instead of objMissing to exclude FootNotes and EndNotes&lt;br /&gt;//***&lt;br /&gt;&lt;br /&gt;Word.Document WDocument = Globals.ThisAddIn.Application.ActiveDocument;&lt;br /&gt;object objMissing = System.Reflection.Missing.Value;&lt;br /&gt;&lt;br /&gt;lblNumberOfPages.Text = WDocument.ComputeStatistics(Word.WdStatistic.wdStatisticPages, ref objMissing).ToString();&lt;br /&gt;&lt;br /&gt;lblNumberOfParagraphs.Text = WDocument.ComputeStatistics(Word.WdStatistic.wd&lt;br /&gt;StatisticParagraphs, ref objMissing).ToString();&lt;br /&gt;&lt;br /&gt;lblNumberOfSentences.Text = WDocument.Sentences.Count.ToString();&lt;br /&gt;&lt;br /&gt;lblNumberOfLines.Text = WDocument.ComputeStatistics(Word.WdStatistic.wdStatisticLines, ref objMissing).ToString();&lt;br /&gt;&lt;br /&gt;lblNumberOfWords.Text = WDocument.ComputeStatistics(Word.WdStatistic.wdStatisticWords, ref objMissing).ToString();&lt;br /&gt;&lt;br /&gt;lblNumberOfCharactersIncludingSpaces.Text = WDocument.ComputeStatistics(Word.WdStatistic.wdStatisticCharactersWithSpaces, ref objMissing).ToString();&lt;br /&gt;&lt;br /&gt;lblNumberOfCharactersExcludingSpaces.Text = WDocument.ComputeStatistics(Word.WdStatistic.wdStatisticCharacters, ref objMissing).ToString();</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/5022115915314017309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2008/12/c-calculate-statistics-of-word-document.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/5022115915314017309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/5022115915314017309'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2008/12/c-calculate-statistics-of-word-document.html' title='C#: Calculate Statistics of a Word Document'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7129382779087533277.post-52137994883426889</id><published>2008-11-20T15:59:00.000-05:00</published><updated>2011-06-07T14:51:53.955-04:00</updated><title type='text'>C#: Capture ScreenShot</title><content type='html'>Courtesy: NOBUGZ (http://forums.microsoft.com/MSDN/User/Profile.aspx?UserID=170041&amp;SiteID=1)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Drawing;&lt;br /&gt;using System.Drawing.Imaging;&lt;br /&gt;using System.Runtime.InteropServices;&lt;br /&gt;using System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;namespace KSeeSharp&lt;br /&gt;{&lt;br /&gt;    class ScreenShot&lt;br /&gt;    {&lt;br /&gt;        [DllImport(&quot;gdi32.dll&quot;)]&lt;br /&gt;        static extern bool BitBlt(IntPtr hdcDest, int xDest, int yDest, int wDest, int hDest, IntPtr hdcSource, int xSrc, int ySrc, CopyPixelOperation rop);&lt;br /&gt;        [DllImport(&quot;user32.dll&quot;)]&lt;br /&gt;        static extern bool ReleaseDC(IntPtr hWnd, IntPtr hDc);&lt;br /&gt;        [DllImport(&quot;gdi32.dll&quot;)]&lt;br /&gt;        static extern IntPtr DeleteDC(IntPtr hDc);&lt;br /&gt;        [DllImport(&quot;gdi32.dll&quot;)]&lt;br /&gt;        static extern IntPtr DeleteObject(IntPtr hDc);&lt;br /&gt;        [DllImport(&quot;gdi32.dll&quot;)]&lt;br /&gt;        static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);&lt;br /&gt;        [DllImport(&quot;gdi32.dll&quot;)]&lt;br /&gt;        static extern IntPtr CreateCompatibleDC(IntPtr hdc);&lt;br /&gt;        [DllImport(&quot;gdi32.dll&quot;)]&lt;br /&gt;        static extern IntPtr SelectObject(IntPtr hdc, IntPtr bmp);&lt;br /&gt;        [DllImport(&quot;user32.dll&quot;)]&lt;br /&gt;        public static extern IntPtr GetDesktopWindow();&lt;br /&gt;        [DllImport(&quot;user32.dll&quot;)]&lt;br /&gt;        public static extern IntPtr GetWindowDC(IntPtr ptr);&lt;br /&gt;&lt;br /&gt;        public void CaptureScreenShot(string filePath)&lt;br /&gt;        {&lt;br /&gt;            Size sz = Screen.PrimaryScreen.Bounds.Size;&lt;br /&gt;            IntPtr hDesk = GetDesktopWindow();&lt;br /&gt;            IntPtr hSrce = GetWindowDC(hDesk);&lt;br /&gt;            IntPtr hDest = CreateCompatibleDC(hSrce);&lt;br /&gt;            IntPtr hBmp = CreateCompatibleBitmap(hSrce, sz.Width, sz.Height);&lt;br /&gt;            IntPtr hOldBmp = SelectObject(hDest, hBmp);&lt;br /&gt;            bool b = BitBlt(hDest, 0, 0, sz.Width, sz.Height, hSrce, 0, 0, CopyPixelOperation.SourceCopy | CopyPixelOperation.CaptureBlt);&lt;br /&gt;            Bitmap bmp = Bitmap.FromHbitmap(hBmp);&lt;br /&gt;            SelectObject(hDest, hOldBmp);&lt;br /&gt;            DeleteObject(hBmp);&lt;br /&gt;            DeleteDC(hDest);&lt;br /&gt;            ReleaseDC(hDesk, hSrce);&lt;br /&gt;            bmp.Save(filePath);&lt;br /&gt;            bmp.Dispose();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://kodesharp.blogspot.com/feeds/52137994883426889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kodesharp.blogspot.com/2008/11/c-capture-screenshot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/52137994883426889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7129382779087533277/posts/default/52137994883426889'/><link rel='alternate' type='text/html' href='http://kodesharp.blogspot.com/2008/11/c-capture-screenshot.html' title='C#: Capture ScreenShot'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>