<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>ASP.NET</title>
        <link>http://geekswithblogs.net/TimH/category/2637.aspx</link>
        <description>ASP.NET</description>
        <language>en-NZ</language>
        <copyright>Tim Huffam</copyright>
        <managingEditor>timhuffam@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>How to move/drag objects in Silverlight (2.0)</title>
            <link>http://geekswithblogs.net/TimH/archive/2008/11/05/how-to-movedrag-objects-in-silverlight-2.0.aspx</link>
            <description>&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;font face="Arial"&gt;The following code shows you how you can make Silverlight controls/objects moveable by dragging them with the mouse.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;font face="Arial"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;font face="Arial"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;font face="Arial" color="#000000" size="3"&gt;&lt;strong&gt;Page.cs:&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;UserControl&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; x&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;:&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;Class&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="MovingObjs.Page"&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: red"&gt; xmlns&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: red"&gt; xmlns&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;x&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: red"&gt; Width&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="400"&lt;/span&gt;&lt;span style="COLOR: red"&gt; Height&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="300"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;    &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;Canvas&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; x&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;:&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;Name&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="LayoutRoot"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; Background&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="White"&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;        &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;Border&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; CornerRadius&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="10"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; x&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;:&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;Name&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="brdMovable"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; BorderBrush&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="Black"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; BorderThickness&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="2"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; Background&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="AntiqueWhite"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; Canvas.Top&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="100"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; Canvas.Left&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="10"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; MouseLeftButtonDown&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="brdMovable_MouseLeftButtonDown"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; MouseLeftButtonUp&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="brdMovable_MouseLeftButtonUp"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; MouseMove&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="brdMovable_MouseMove"&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;            &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;Grid&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; x&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;:&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;Name&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="grid1"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; Width&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="300"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; Margin&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="5" &amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;                &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;TextBlock&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; x&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;:&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;Name&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="txtBlkTest"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt; Text&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="Test"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;TextBlock&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;            &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;Grid&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;        &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;Border&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;    &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;Canvas&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"&gt;UserControl&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;font face="Arial" color="#000000" size="3"&gt;&lt;strong&gt;Page.xaml.cs:&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;namespace&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; MovingObjs&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;partial&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Page&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;    {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; moving = &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; offSetX;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; offSetY;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; Page()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            InitializeComponent();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; brdMovable_MouseLeftButtonDown(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR: #2b91af"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            moving = &lt;span style="COLOR: blue"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            &lt;span style="COLOR: #2b91af"&gt;Point&lt;/span&gt; offset = e.GetPosition(brdMovable);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            offSetX = offset.X;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            offSetY = offset.Y;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; brdMovable_MouseLeftButtonUp(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR: #2b91af"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            moving = &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; brdMovable_MouseMove(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR: #2b91af"&gt;MouseEventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (moving)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: #2b91af"&gt;Canvas&lt;/span&gt; parent = (&lt;span style="COLOR: #2b91af"&gt;Canvas&lt;/span&gt;)&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.brdMovable.Parent;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: #2b91af"&gt;Point&lt;/span&gt; p = e.GetPosition(parent);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; x = p.X - offSetX;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; y = p.Y - offSetY;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                txtBlkTest.Text = &lt;span style="COLOR: #a31515"&gt;"X: "&lt;/span&gt; + x.ToString() + &lt;span style="COLOR: #a31515"&gt;", Y: "&lt;/span&gt; + y.ToString();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.brdMovable.SetValue(&lt;span style="COLOR: #2b91af"&gt;Canvas&lt;/span&gt;.LeftProperty, x);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.brdMovable.SetValue(&lt;span style="COLOR: #2b91af"&gt;Canvas&lt;/span&gt;.TopProperty, y);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;    }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126621"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126621" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/TimH/aggbug/126621.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tim Huffam</dc:creator>
            <guid>http://geekswithblogs.net/TimH/archive/2008/11/05/how-to-movedrag-objects-in-silverlight-2.0.aspx</guid>
            <pubDate>Tue, 04 Nov 2008 23:24:43 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/TimH/comments/126621.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/TimH/archive/2008/11/05/how-to-movedrag-objects-in-silverlight-2.0.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/TimH/comments/commentRss/126621.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/TimH/services/trackbacks/126621.aspx</trackback:ping>
        </item>
        <item>
            <title>How to remove TFS workspaces</title>
            <link>http://geekswithblogs.net/TimH/archive/2008/10/09/how-to-remove-tfs-workspaces.aspx</link>
            <description>&lt;div&gt;&lt;font face="Arial" size="2"&gt;&lt;span class="210411022-23082008"&gt;This will actually remove the your workspaces - unlike the VS/TFS Source Control Explorer which simply does not display them - duh!&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Arial" size="2"&gt;&lt;span class="210411022-23082008"&gt;&lt;/span&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Arial" size="2"&gt;&lt;span class="210411022-23082008"&gt;From the VS command prompt: &lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;span class="210411022-23082008"&gt;  &lt;/span&gt;&lt;font color="#0000ff"&gt;tf workspaces /remove:*&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Arial" size="2"&gt;&lt;/font&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125718"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125718" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/TimH/aggbug/125718.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tim Huffam</dc:creator>
            <guid>http://geekswithblogs.net/TimH/archive/2008/10/09/how-to-remove-tfs-workspaces.aspx</guid>
            <pubDate>Wed, 08 Oct 2008 20:10:29 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/TimH/comments/125718.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/TimH/archive/2008/10/09/how-to-remove-tfs-workspaces.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/TimH/comments/commentRss/125718.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/TimH/services/trackbacks/125718.aspx</trackback:ping>
        </item>
        <item>
            <title>Firefox 3 ignores cache control http headers - security risk for online apps!</title>
            <link>http://geekswithblogs.net/TimH/archive/2008/09/26/firefox-3-ignores-cache-control-http-headers.aspx</link>
            <description>&lt;p&gt;If a user, using Firefox 3, signs out of a web site and does not close the browser, anyone else using that browser subsequently can view the content of pages loaded by the previous user (eg in an internet cafe, or any place where workstations are shared eg universities) - exposing private/confidential data.&lt;/p&gt;
&lt;div&gt;&lt;span class="813573621-25092008"&gt;This only affects HTTP post requests (not gets) and only Firefox version 3 - earlier versions (1.5, 2 etc), and IE, are not affected.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span class="813573621-25092008"&gt;The main points are:&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span class="813573621-25092008"&gt;This is definately a bug:  a violation of RFC 2616, section 14.9 that states "The Cache-Control general-header field is used to specify directives that MUST be obeyed by all caching mechanisms along the request/response chain".&lt;/span&gt; &lt;/li&gt;
    &lt;li&gt;&lt;span class="813573621-25092008"&gt;Some companies who deem this a significant hole in their security have chosen to block requests from Firefox 3 (eg they deem it their responsibility to secure their customers private and confidential data to the best of their ability).&lt;/span&gt; &lt;/li&gt;
    &lt;li&gt;&lt;span class="813573621-25092008"&gt;This bug has been registered with the Mozilla dev team, but currently (as of 26 Sept 2008) has a status of unconfirmed.&lt;/span&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;span class="813573621-25092008"&gt;
&lt;div&gt;&lt;span class="813573621-25092008"&gt;Related links:&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span class="813573621-25092008"&gt;&lt;a href="http://forums.mozillazine.org/viewtopic.php?f=25&amp;amp;t=673135&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a"&gt;http://forums.mozillazine.org/viewtopic.php?f=25&amp;amp;t=673135&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a&lt;/a&gt; (one of the best discussions I've found on this - includes several other links)&lt;/span&gt; &lt;/li&gt;
    &lt;li&gt;&lt;span class="813573621-25092008"&gt;&lt;a href="http://www.freesoft.org/CIE/RFC/2068/164.htm"&gt;http://www.freesoft.org/CIE/RFC/2068/164.htm&lt;/a&gt; (RFC 2616, section 14.9 - regarding cache control)&lt;/span&gt; &lt;/li&gt;
    &lt;li&gt;&lt;span class="813573621-25092008"&gt;&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=441751"&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=441751&lt;/a&gt; (the bug registered on Mozilla's bug tracking system)&lt;/span&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span class="813573621-25092008"&gt;Tim&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125468"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125468" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/TimH/aggbug/125468.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tim Huffam</dc:creator>
            <guid>http://geekswithblogs.net/TimH/archive/2008/09/26/firefox-3-ignores-cache-control-http-headers.aspx</guid>
            <pubDate>Fri, 26 Sep 2008 03:17:40 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/TimH/comments/125468.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/TimH/archive/2008/09/26/firefox-3-ignores-cache-control-http-headers.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/TimH/comments/commentRss/125468.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/TimH/services/trackbacks/125468.aspx</trackback:ping>
        </item>
        <item>
            <title>ASP.NET SQL Server error: The connection was not closed. The connection's current state is open</title>
            <link>http://geekswithblogs.net/TimH/archive/2008/09/09/asp.net-sql-server-error-the-connection-was-not-closed.-the.aspx</link>
            <description>&lt;p&gt;The following error occured when 2 requests hit an ASP.NET (2.0) web app (using SQL Server 2005) at the same time:&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New" color="#0000ff"&gt;The connection was not closed. The connection's current state is open&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Normally this only occurs if you have a connection that is not being closed.  However in our case all connections where being closed using a &lt;font face="Courier New" color="#0000ff"&gt;try&lt;/font&gt;-&lt;font face="Courier New" color="#0000ff"&gt;finally&lt;/font&gt; block (personally I prefer using a &lt;font face="Courier New" color="#0000ff"&gt;using&lt;/font&gt; block).&lt;/p&gt;
&lt;p&gt;This error only occured when the 2 request were initiated from different machines.&lt;/p&gt;
&lt;p&gt;It turns out that the error occured because the same username was being used  for all requests (we were not interested in the username  in the app - and simply validated the request through a token and set the username to the same static string for all requests).  As soon as we made the username unique (by appending a guid to it) the error ceased to occur.&lt;/p&gt;
&lt;p&gt;This indicates that ADO.NET uses the username as part of it's connection pooling management. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;*** UPDATE 17 Nov 08 ***&lt;br /&gt;
&lt;/strong&gt;After more testing we proved this theory incorrect.  We found that the root cause of the original exception (connection state is open) was because we used a static member in one of our ORM classes - this held on to the connection, and it never got closed (hence the exception) - once we converted this to a non-static variable the problem disappeared.  However, adding the GUID to the ASP.NET username did have the above mentioned affect in several scenarios - which still leads me to believe the username has some relation/use in the connection pooling management (not sure why - as it's the process's identity that things run as - not the user's).&lt;/p&gt;
&lt;p&gt;HTH&lt;/p&gt;
&lt;p&gt;Tim&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125020"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125020" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/TimH/aggbug/125020.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tim Huffam</dc:creator>
            <guid>http://geekswithblogs.net/TimH/archive/2008/09/09/asp.net-sql-server-error-the-connection-was-not-closed.-the.aspx</guid>
            <pubDate>Tue, 09 Sep 2008 00:48:33 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/TimH/comments/125020.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/TimH/archive/2008/09/09/asp.net-sql-server-error-the-connection-was-not-closed.-the.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/TimH/comments/commentRss/125020.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/TimH/services/trackbacks/125020.aspx</trackback:ping>
        </item>
        <item>
            <title>Task Oriented Programming</title>
            <link>http://geekswithblogs.net/TimH/archive/2008/09/09/task-oriented-programming.aspx</link>
            <description>&lt;p&gt;For some time I've been wondering if there's a better way to program business logic.  Years ago I used to write COBOL, then moved onto a 4GL, bla bla bla... and today I find myself well entrenched in OO with Microsoft's .Net.  Development times don't seem to be much better these days - and the complexity of things seems to have mushroomed.  &lt;/p&gt;
&lt;p&gt;We went from barely-a-3GL to 4GL back to 3GL plus an explosion of things you need to consider.  We started with procedural code then moved to OO and seem to have got stuck there.  But somehow I think we need to revise our use of OO.  Business logic is predominantly procedural code - even if written in OO; it starts, follows a process, performing stuff until finished eg Customer.UpdateCreditLimit()&lt;/p&gt;
&lt;p&gt;OO is really good for modelling things - as per the classic OO examples of a bicycle or car.  And thus they model business things quite well too - like an Invoice or a Customer.  &lt;/p&gt;
&lt;p&gt;However, I've found that the more object oriented the code gets - the less productive, maintainable and flexible it becomes.  Not saying leave OO - far from it - it's brilliant.  It's just that we need to learn when to say 'when'.   The use of patterns has helped a huge amount - but these can also caused similar problems - when being applied where they aren't really needed - resulting in overly complex software (read: inflexible and unmaintainable and unproductive).  It's a fine line - and it's not easy to get the balance.&lt;/p&gt;
&lt;p&gt;A major break through in this area is &lt;a href="http://msdn.microsoft.com/en-us/library/bb397926.aspx"&gt;LINQ&lt;/a&gt;.  This has meant we have less clutter in our apps catering for ORM (brilliant).  This has resulted in code very similar to the old 4GL days (essentially 4GLs were just SQL based code anyway) - where all you care/code about is the business logic - caring not a jot about how or where a Customer or Order got created - and in this age of SOA - that becomes more important (as a Customer could come from many different sources - local RDBMS, company ERP, external CRM etc).  I guess you could say LINQ allows you to focus your code to be more domain specific (not saying it's a DSL).&lt;/p&gt;
&lt;p&gt;I have been playing with workflows for donkeys of years and found that although the individual workflow systems themselves can range from very simple to incredibly complex - the individual tasks they perform need not be.   This had lead me to start thinking about applying this principle to code design at a reasonably low level....  what if we developed tasks as objects.  Each task has just one job (I've heard some people say this is how objects 'should' be coded anyway).  It has properties that can be get/set.  Keeping things dead simple, eg:&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff" size="2"&gt;class&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#2b91af" size="2"&gt;AdderTask&lt;br /&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;
    &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; &lt;font color="#000000"&gt;Addend1 {&lt;/font&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;get&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;;&lt;/font&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;set&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;; }&lt;br /&gt;
&lt;/font&gt;    &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; &lt;font color="#000000"&gt;Addend2 {&lt;/font&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;get&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;;&lt;/font&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;set&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;; }&lt;/font&gt;&lt;br /&gt;
    &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; &lt;font color="#000000"&gt;Result {&lt;/font&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;get&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;;&lt;/font&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;set&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;; }&lt;/font&gt;&lt;br /&gt;
    &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt; AdderTask(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; addend1, &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New" size="2"&gt; addend2)&lt;br /&gt;
    {&lt;br /&gt;
        &lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New" size="2"&gt;Addend1 = addend1;&lt;br /&gt;
        &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;Addend2 = addend2;&lt;br /&gt;
    }&lt;br /&gt;
&lt;/font&gt;    &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;AdderTask&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; &lt;/font&gt;&lt;font face="Courier New" color="#000000"&gt;Execute()&lt;br /&gt;
    &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;{&lt;br /&gt;
        Result = Addend1 + Addend2;&lt;br /&gt;
&lt;/font&gt;        &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#000000"&gt;;&lt;br /&gt;
&lt;/font&gt;  &lt;font color="#000000"&gt;  &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;}&lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;To run this you'd simply do this:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; &lt;font color="#000000"&gt;result =&lt;/font&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;AdderTask&lt;/font&gt;&lt;font color="#000000" size="2"&gt;(1, 2).Execute().Result;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000" size="2"&gt;Exposing the task's properties means you can build up get and set statements - and because the Execute method returns the task object itself you can easily use it in a single line as if it was a method on it's own - or retrieve it's property values after the Execute (these tasks would easily be adapted to work within a workflow system).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000" size="2"&gt;This style lends itself to expanding; rather like building blocks, you can build large workflows out of these task oriented blocks.  The workflows themselves coded just like these tasks - whereby all the business logic resides within the Execute() method.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000" size="2"&gt;Adding LINQ to the mix takes this to the next level - allowing you to build software that is simple to develop and understand.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000" size="2"&gt;I've been building a sizable system using this technique and I'm finding that I'm converting code developed using standard OO practices over to this methodology as it makes code more easily reused - but most importantly: easier to read and maintain.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;In summary:&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font size="2"&gt;All input and output parameters should be implemented as properties (getter and setter accessors).&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font size="2"&gt;Provide a constructor that accepts all required parameters. A default constructor (with no parameters) is optional (I've found I never need these - but if you were to use these tasks in a workflow system they may need this).&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font size="2"&gt;Provide an Execute() method that takes no parameters and returns the object instance eg &lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font size="2"&gt;The object should clean up after itself.  &lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font size="2"&gt;Other notes:&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font size="2"&gt;Originally I created a similar type of class for workflows - but I found that these ended up being no different in concept to tasks.  Likewise I've found that some tasks needed to call other tasks - so I've ended up just implementing everything as tasks.  On reflection this is actually quite valid - because, as I found when building large orchestrations using Biztalk, workflows become atomic tasks themselves when used within the context of a large orchestration (which may run many workflows and external tasks) - and the orchestration, from a highlevel could also be considered an atomic task.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font size="2"&gt;I've found using System.Transactions.TransactionScope great for scoping transactions around many tasks when creating a macro task that runs many sub tasks.&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Suggestions/comments very welcome - I'd like others to expand or comment on this.&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000" size="2"&gt;Tim&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125008"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125008" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/TimH/aggbug/125008.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tim Huffam</dc:creator>
            <guid>http://geekswithblogs.net/TimH/archive/2008/09/09/task-oriented-programming.aspx</guid>
            <pubDate>Mon, 08 Sep 2008 12:10:06 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/TimH/comments/125008.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/TimH/archive/2008/09/09/task-oriented-programming.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/TimH/comments/commentRss/125008.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/TimH/services/trackbacks/125008.aspx</trackback:ping>
        </item>
        <item>
            <title>CSS Absolute positioning in Firefox and IE</title>
            <link>http://geekswithblogs.net/TimH/archive/2008/09/06/css-absolute-positioning-in-firefox-and-ie.aspx</link>
            <description>&lt;p&gt;A couple of notes regarding absolute positioning in FF and IE...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Specifying position values:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;IE allows you to omit the unit of measurement for Left and Top.  It assumes pixels eg:&lt;br /&gt;
        &lt;font face="Courier New" color="#0000ff"&gt;obj.style.Left = 10;&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;However FF requires that you specify the unit of measurement eg:&lt;br /&gt;
        &lt;font face="Courier New" color="#0000ff"&gt;obj.style.Left = "10px";&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Using other elements parents to calculate your object's position:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The scenario might be you have a div that you want to position over or by another object - but that object has no position values.  In this case I use parent object values.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Don't use the IE specific property parentElement (this is not supported in other browsers) eg:&lt;br /&gt;
        &lt;font face="Courier New" color="#0000ff"&gt;obj.style.Left = otherObj.parentElement.offsetLeft + 10;&lt;/font&gt;  &lt;br /&gt;
    note in this example (that works in IE only) there is no unit of measurement.&lt;/li&gt;
    &lt;li&gt;Instead use the parentNode property (this works for both IE and FF) eg:&lt;br /&gt;
        &lt;font face="Courier New" color="#0000ff"&gt;obj.style.left = (otherObj.parentNode.offsetLeft + 10) + "px";&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HTH&lt;br /&gt;
Tim&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124974"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124974" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/TimH/aggbug/124974.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tim Huffam</dc:creator>
            <guid>http://geekswithblogs.net/TimH/archive/2008/09/06/css-absolute-positioning-in-firefox-and-ie.aspx</guid>
            <pubDate>Fri, 05 Sep 2008 21:57:24 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/TimH/comments/124974.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/TimH/archive/2008/09/06/css-absolute-positioning-in-firefox-and-ie.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/TimH/comments/commentRss/124974.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/TimH/services/trackbacks/124974.aspx</trackback:ping>
        </item>
        <item>
            <title>VS 2008 crashes when running unit tests - VSPERF?</title>
            <link>http://geekswithblogs.net/TimH/archive/2008/08/27/vs-2008-crashes-when-running-unit-tests---vsperf.aspx</link>
            <description>&lt;p&gt;Sometimes Visual Studio 2008 (Team System Developer Edition - with Team Explorer and TFS Power Tools) crashes (disappearing completely) when running unit tests.&lt;/p&gt;
&lt;p&gt;I have not yet tried SP1 for VS2008 - will hopefully try this in the next week or two.&lt;/p&gt;
&lt;p&gt;Not really sure what causes this - but have noticed that the following error is written to the windows event log prior to the crash (not at the same time).&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Event Type: Error&lt;br /&gt;
Event Source: VSPERF&lt;br /&gt;
Event Category: None&lt;br /&gt;
Event ID: 1406&lt;br /&gt;
Date:  22/08/2008&lt;br /&gt;
Time:  16:27:18&lt;br /&gt;
User:  N/A&lt;br /&gt;
Computer: MYPC&lt;br /&gt;
Description:&lt;br /&gt;
&lt;font face="Arial"&gt;There was an error connecting to the Logger Engine while registering C:\Dev\DEV\Release1\Source\MyWebProject\bin\MyWebProject.dll for coverage.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Initially I thought it was a particular test or peice of target code that caused it, but found that the crash occured at seemingly random moments ie I tried running all tests and it would crash at test number 259 (out of 264), then tried running the first 100 tests and it crashed - then tried the last 20 tests and it crashed-  even tried running 1 test and it crashed.  This was the worst case of this problem - over the past few weeks it (VS crashing/disappearing) would only happen every now and then.&lt;/p&gt;
&lt;p&gt;The only work around I've found is to replace or remove the workspace and start again...&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;If you have pending changes, shelve them first.&lt;/li&gt;
    &lt;li&gt;Using Source Control Explorer, remove the workspace.&lt;/li&gt;
    &lt;li&gt;Close the solution in VS.&lt;/li&gt;
    &lt;li&gt;Within a VS command prompt run the following command to remove all workspaces (if you have many workspaces and only want to remove the one workspace then specify it's name instead of the asterisk used below):&lt;br /&gt;
        &lt;font face="Courier New" color="#0000ff"&gt;tf workspaces /remove:*&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;Use the Source Control Explorer to recreate a new workspace.  &lt;br /&gt;
    &lt;strong&gt;Note:&lt;/strong&gt; if you have scripts/macros that reference your original workspace source dir, then it would pay to use the same dir - if you do,  make sure you delete the contents of this dir before reassigning it to the new workspace.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;HTH&lt;br /&gt;
Tim&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124708"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124708" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/TimH/aggbug/124708.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tim Huffam</dc:creator>
            <guid>http://geekswithblogs.net/TimH/archive/2008/08/27/vs-2008-crashes-when-running-unit-tests---vsperf.aspx</guid>
            <pubDate>Tue, 26 Aug 2008 21:36:21 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/TimH/comments/124708.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/TimH/archive/2008/08/27/vs-2008-crashes-when-running-unit-tests---vsperf.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/TimH/comments/commentRss/124708.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/TimH/services/trackbacks/124708.aspx</trackback:ping>
        </item>
        <item>
            <title>VS2008 Javascript debugging error: The breakpoint will not currently be hit. No symbols have been loaded for this document</title>
            <link>http://geekswithblogs.net/TimH/archive/2008/08/18/vs2008-javascript-debugging-error-the-breakpoint-will-not-currently-be.aspx</link>
            <description>&lt;p&gt;When trying to debug javascript using Visual Studio 2008 there a couple of things you need to do first - otherwise it (debugging) will not work and you'll get the following error when you hover over breakpoint in your javascript:&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" color="#0000ff"&gt;The breakpoint will not currently be hit. No symbols have been loaded for this document.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Note that this is only for debugging using IE (6) - not sure about other browsers/versions.&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Within IE go into Tools - Internet Options - Advanced tab and make sure the 'Disable Script Debugging' is unchecked.&lt;/li&gt;
    &lt;li&gt;Make sure you have a breakpoint in your javascript.&lt;/li&gt;
    &lt;li&gt;Start debugging your web app in VS.&lt;/li&gt;
    &lt;li&gt;Within VS select menu item Debug - 'Attach to Process...'&lt;/li&gt;
    &lt;li&gt;On the Attach to Process dialog, select the row which has explorer.exe for your app (the Title column will have you page title on it), then click Attach.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That's it - when your breakpoint is reached the VS debugger will be triggered.&lt;/p&gt;
&lt;p&gt;HTH&lt;br /&gt;
Tim&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124502"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124502" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/TimH/aggbug/124502.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tim Huffam</dc:creator>
            <guid>http://geekswithblogs.net/TimH/archive/2008/08/18/vs2008-javascript-debugging-error-the-breakpoint-will-not-currently-be.aspx</guid>
            <pubDate>Sun, 17 Aug 2008 22:04:24 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/TimH/comments/124502.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/TimH/archive/2008/08/18/vs2008-javascript-debugging-error-the-breakpoint-will-not-currently-be.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/TimH/comments/commentRss/124502.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/TimH/services/trackbacks/124502.aspx</trackback:ping>
        </item>
        <item>
            <title>How to find out what the client (browser) is posting back to the server (with ASP.NET C#)</title>
            <link>http://geekswithblogs.net/TimH/archive/2008/07/24/how-to-find-out-what-the-client-browser-is-posting.aspx</link>
            <description>&lt;p&gt;For those of you wanting to know just what is being sent (posted) back from the client (browser) to the server (ASP.NET) - when a postback occurs - use the following lines in your C# ASP.NET program:&lt;/p&gt;
&lt;font size="2"&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; msg = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;""&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;;&lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;for&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt; i = 0; i &amp;lt; Request.Form.AllKeys.Length; i++)&lt;br /&gt;
{&lt;br /&gt;
  msg += i.ToString() + &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;" "&lt;/font&gt;&lt;font size="2"&gt; + Request.Form.GetKey(i) + &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;": "&lt;/font&gt;&lt;font size="2"&gt; + Request.Form[Request.Form.GetKey(i)] + &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;"\r\n"&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;;&lt;br /&gt;
}&lt;br /&gt;
System.Diagnostics.&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;Debug&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(msg);&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;Either look at the output window or put a break-point on the last line so you can use the debugger to view the variables values at runtime.&lt;/p&gt;
&lt;p&gt;Note that this only the information within the HTTP POST payload.  There are also things like the HTTP headers, cookies etc (all of which you can query in a similar fashion - all within the Page.Request object).&lt;/p&gt;
&lt;p&gt;Normally I'd use a tool like &lt;a href="http://www.fiddlertool.com/fiddler/"&gt;Fiddler&lt;/a&gt; for this type of interogation - but sometimes it's just as quick and easy to do it in the code like this.&lt;/p&gt;
&lt;p&gt;HTH&lt;/p&gt;
&lt;p&gt;Tim&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123981"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123981" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/TimH/aggbug/123981.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tim Huffam</dc:creator>
            <guid>http://geekswithblogs.net/TimH/archive/2008/07/24/how-to-find-out-what-the-client-browser-is-posting.aspx</guid>
            <pubDate>Thu, 24 Jul 2008 01:43:51 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/TimH/comments/123981.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/TimH/archive/2008/07/24/how-to-find-out-what-the-client-browser-is-posting.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/TimH/comments/commentRss/123981.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/TimH/services/trackbacks/123981.aspx</trackback:ping>
        </item>
        <item>
            <title>Web development client side debugging - display area, javascript injection and accessing the dom at runtime</title>
            <link>http://geekswithblogs.net/TimH/archive/2008/07/11/web-development-client-side-debugging---display-area-javascript-injection.aspx</link>
            <description>&lt;p&gt;For those of you who don't have access to IE or FF dev toolbars - this is how we used to do client side runtime debugging...&lt;/p&gt;
&lt;p&gt;Drop the following code into your web page (preferrably at the bottom):&lt;/p&gt;
&lt;p&gt;&lt;span class="494181922-10072008"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;script&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; log(text){&lt;br /&gt;
  document.getElementById(&lt;font color="#a31515"&gt;"logArea"&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;).value = text;&lt;br /&gt;
}&lt;br /&gt;
&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; dump(){&lt;br /&gt;
  log(document.body.innerHTML);&lt;br /&gt;
}&lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;function logProps(obj){&lt;br /&gt;
&lt;span class="494181922-10072008"&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;var msg = "";&lt;br /&gt;
&lt;span class="494181922-10072008"&gt;  &lt;/span&gt;for(var i=0;i&amp;lt;obj.attributes.length;i++)&lt;br /&gt;
&lt;span class="494181922-10072008"&gt;  &lt;/span&gt;{&lt;br /&gt;
&lt;span class="494181922-10072008"&gt;    &lt;/span&gt;msg+=obj.attributes[i].nodeName + ": " + obj.attributes[i].nodeValue + "\r\n";&lt;br /&gt;
&lt;span class="494181922-10072008"&gt;  &lt;/span&gt;}&lt;br /&gt;
&lt;span class="494181922-10072008"&gt;  &lt;/span&gt;log(msg);&lt;br /&gt;
} &lt;/font&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;&lt;span class="494181922-10072008"&gt;&lt;span class="494181922-10072008"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&amp;lt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#a31515"&gt;input&lt;/font&gt; &lt;font color="#ff0000"&gt;ondblclick&lt;/font&gt;&lt;font color="#0000ff"&gt;="eval(this.value)"&lt;/font&gt; &lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;br&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&lt;br /&gt;
&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;textarea&lt;/font&gt; &lt;font color="#ff0000"&gt;id&lt;/font&gt;&lt;font color="#0000ff"&gt;="logArea"&lt;/font&gt; &lt;font color="#ff0000"&gt;cols&lt;/font&gt;&lt;font color="#0000ff"&gt;="80"&lt;/font&gt; &lt;font color="#ff0000"&gt;rows&lt;/font&gt;&lt;font color="#0000ff"&gt;="20"&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515"&gt;textarea&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This should be self explanatory - the html controls provide a place to enter and run javascript (eg to query the DOM at runtime) and somewhere to dump the data.  And the javascript provides some helper functions - for dumping data and for querying all the properties of an object.&lt;/p&gt;
&lt;p&gt;The following is a IE specific version of the for loop which may show a few other properties:&lt;br /&gt;
&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;&lt;span class="494181922-10072008"&gt;  &lt;/span&gt;for(x in obj)&lt;br /&gt;
&lt;span class="494181922-10072008"&gt;  &lt;/span&gt;{&lt;br /&gt;
&lt;span class="494181922-10072008"&gt;    &lt;/span&gt;msg+=x + ": " + obj[x] + "\r\n";&lt;br /&gt;
&lt;span class="494181922-10072008"&gt;  &lt;/span&gt;}&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;
HTH&lt;br /&gt;
Tim&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123722"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123722" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/TimH/aggbug/123722.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tim Huffam</dc:creator>
            <guid>http://geekswithblogs.net/TimH/archive/2008/07/11/web-development-client-side-debugging---display-area-javascript-injection.aspx</guid>
            <pubDate>Thu, 10 Jul 2008 22:52:27 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/TimH/comments/123722.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/TimH/archive/2008/07/11/web-development-client-side-debugging---display-area-javascript-injection.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/TimH/comments/commentRss/123722.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/TimH/services/trackbacks/123722.aspx</trackback:ping>
        </item>
    </channel>
</rss>