I recommend you work on creating some console games and then move on to creating some gui games. I took a class in C# this semester, because I previously had taken an intro to Java class, which had given me info on loops and arrays, one of our projects was to create a console game. I create minesweeper, where you just selected your position by typing it in. It was actually pretty fun to make.
The point is, is that you'll gain a lot more from hands on experience than from reading from the book, in my opinion. I've read sections of my textbook 10 times over and still don't know what I'm doing, I go to implement it, it doesn't work. I get it working, I kinda understand better. Again this is all just personal opinion, but if you can create something simple from scratch, like a pong game, and you understand it perfectly well, it doesn't really take all that long. You could probably make the entire game in about 2-3 hours if you understood everything, and yet it took a group of us in class 2 weeks to get it working properly when we were still learning that stuff.
(Also in case this is understood as such, I'm not saying don't read the books, they are great, I'm saying to practice the stuff you traditionally see in the first 8 or so chapters of a programing book (Which is like, creating strings, ints, doubles, floating points, printing out statements, sending information to the program with input, arrays, loops, drawing shapes) because for me and my class, it's poor understanding of those first semester / second semester concepts that are causing issues, not the higher up database and networking stuff)