I've got my tic tac toe program up and running. the layout is the way i want it to be, and everything works fine. i'm having one last final problem that i can't really seem to figure out. I'm trying to calculate if there is a tie. I know that i would have to create a boolean variable to say that the space is filled, but i'm not sure exactly how to code it into my program. here is the code that i have.

Code:

Public Class Form1

    Private turn As Integer = 1
    Private play() As String = {"O", "X"}
    Private board(2, 2) As String

    Private Structure arrayIndex
        Dim x As Integer
        Dim y As Integer
    End Structure

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For x As Integer = 1 To 9
            Dim b As New Button With { _
                .Width = 80, _
                .Height = 80, _
                .Text = "", _
                .Location = New Point(60 + (((x - 1) Mod 3) * 80), 60 + (((x - 1) \ 3) * 80)), _
                .Tag = New arrayIndex With {.x = (x - 1) Mod 3, .y = (x - 1) \ 3}}
            Me.Controls.Add(b)
            AddHandler b.Click, AddressOf buttons_click

        Next
        Me.SetClientSizeCore(360, 360)
        
    End Sub

    Private Sub buttons_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If DirectCast(sender, Button).Text <> "" Then Return
        DirectCast(sender, Button).Text = play(turn Mod 2)
        Dim index As arrayIndex = DirectCast(DirectCast(sender, Button).Tag, arrayIndex)
        board(index.x, index.y) = play(turn Mod 2)
        turn += 1
        winner()

    End Sub

    Private Sub winner()
        Dim rows(7) As String
        rows(0) = board(0, 0) & board(1, 0) & board(2, 0)
        rows(1) = board(0, 1) & board(1, 1) & board(2, 1)
        rows(2) = board(0, 2) & board(1, 2) & board(2, 2)
        rows(3) = board(0, 0) & board(0, 1) & board(0, 2)
        rows(4) = board(1, 0) & board(1, 1) & board(1, 2)
        rows(5) = board(2, 0) & board(2, 1) & board(2, 2)
        rows(6) = board(0, 0) & board(1, 1) & board(2, 2)
        rows(7) = board(2, 0) & board(1, 1) & board(0, 2)

        For x As Integer = 0 To 7
            If rows(x).Trim.Length = 3 AndAlso (rows(x)(0) = rows(x)(1) AndAlso rows(x)(0) = rows(x)(2)) Then
                If MessageBox.Show(rows(x)(0) & "'s WIN!" & ControlChars.NewLine & "Press OK for a new game and press CANCEL to exit.", "We have a winner!", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) = DialogResult.OK Then
                    turn = 1
                    ReDim board(2, 2)
                    For Each ctrl As Control In Controls
                        ctrl.Text = ""
                    Next
                    Return
                Else
                    Me.Close()
                End If
            End If
        Next

    End Sub


End Class