So your code gets the current month, and compares it to...the current month.
And you expect it to spot when the month changes?
Well, it will. But only if the month actually changes in the milliseconds (or even nanoseconds) between the two accesses to the DateTime.Now property - which is unlikely in the extreme.
Probably, what you actually want to do is create a private DateTime variable and preset it to the "initial" date:
private DateTime startedAt = DateTime.Now;
Then in your button Click handler just check it:
DateTime now = DateTime.Now;
if (startedAt.Month == now.Month)
x = 0;
startedAt = now;