No, not strange at all. As I explained in a previous post, the purpose of the Invoke method is NOT to give you access to that control specifically. The purpose of the Invoke method is to marshal a method call to the thread that owns that control. Once the method is called on that thread then it can do whatever it wants. It can access every control owned by that thread.

Consider this. You are in a magic house with two rooms and no doors or windows in either room. There are 10 pieces of chocolate in one of the rooms and you're in the other room, so you can't eat any of the chocolate. Now, there also exists a magic teleporter for each piece of chocolate that will instantly take the person who uses it to the room that contains that piece of chocolate. Luckily for you, all 10 of those teleporters are in the same room you're in. Now, you pick up one of those teleporters and use it and you are instantly transported to the room containing the corresponding piece of chocolate. What are you going to do? Are going to eat just that piece of chocolate and then go back to the other room and use the other 9 teleporters, or are you just going to eat all 10 pieces of chocolate?

The rooms are the threads, the pieces of chocolate are the controls and the teleporters are the Invoke methods. Once you invoke a method on the UI thread you are on the UI thread so you have access to every UI element. It doesn't matter which control's Invoke method you used to get there, as long as you're there.