Well there is an easy trick you can use - I think that Sid Meier used this in one of the Civs or something.
In a paint program draw a section of isometric tile just as it would appear in the game. Now assign a unique color to each section of the tile. Now during the game when the user clicks on any isometric tile, you can use that bitmap to determine if you need to adjust the row and column positions to correctly match the map (2d array) that is in memory.
For instance if we assign green to the center of the tile then we know that if the user's mouse falls on the green section of our bitmap - we do not alter the map coords. Let's say that the upper left most triangle of our bitmap is blue. If the user's mouse lands on blue then we know we must subtract 1 from the column in order to get the correct coords. So in reality you are really only checking the mouse against a 2D grid - the grid size is the size of your bitmap which represents one whole isometric tile surrounded by 4 other isometric tiles. When you retrieve the mouse coords you can find the relative position of the mouse as it relates to that bitmap - retrieve the color - and alter the row,column coords accordingly.
I shall attempt to draw this in text - here goes.
Code:
B=Blue (0,0,255)
R=Red(255,0,0)
G=Green(0,255,0)
P=Purple(255,0,255)
Bl=Black(0,0,0)
..................
. /\ .
. B / \ Bl .
. / \ .
. / \ .
. / \ .
. / \ .
. / \ .
./ G \.
.\ /.
. \ / .
. \ / .
. \ / .
. \ / .
. R \ / P .
. \ / .
. \/ .
..................
So if we straighten the grid out so that is is simply a top down type grid we have this.
When mouse lands on:
- Blue(B) - subtract 1 from column
- Purple(P) - add 1 to column
- Black(Bl)- subtract 1 from row
- Red(R) - add 1 to row
Keep in mind that my isometric tile is a bit elongated but it should give you the general idea. Kinda hard to represent with text graphics. Hope this helps.