The code has a lot of repetition in that could be factored out. Instead of writing the same code for each label, why not just have all the labels link to the same function, and use the "sender" object to get the right label:
void Label6Click(object sender, EventArgs e)
{
Label label = (Label)sender;
if(player1 == true)
{
label.Text = "X";
player1 = false;
label.Enabled = false;
checkForWinner();
if(player1Win == true)
{
statusLable.Text = "Player 1 Wins";
textBox1.Text = "Player 1 Wins";
}
else
{
statusLable.Text = "Player 2";
textBox1.Text = "Player 2";
}
}
else
{
label.Text = "O";
player1 = true;
label.Enabled = false;
checkForWinner();
if(player2Win == true)
{
statusLable.Text = "Player 2 Wins";
textBox1.Text = "Player 2 Wins";
}
else
{
statusLable.Text = "Player 1";
textBox1.Text = "Player 1";
}
}
}
There are a few other things you could do to cut the amount of code down even further.