Simplifying `if` statements in Tic Tac Toe function
There should only be eight ways to win; you have nine ReportWin()s.  This one got listed twice:

fieldA2.GetState == state &amp;&amp; fieldB2.GetState == state &amp;&amp; fieldC2.GetState == state


Considering that you've named your squares as independent variables, there's not much you can do to generalize CheckWin().  Start by turning the board into an  array or two-dimensional array, then read the advice in Tic-Tac-Toe design .  Personally, I like the suggestion to list all eight winning configurations, as it results in the least code.