problem with the overall docking behavior in .net
I strongly beleive there is a strange logical problem with the overall docking behavior of the dotnet controls. What a developer needs is that what control he docks first, gets docked first regardless of in what order the controls were added to the container. But dotnet IDE docks the controls in a specific order that somehow depends upon in what order the controls were added to the container. The worst is dotnet doesn't explains what is that specific order. Let me xplain the problem by an xample:
1) In any form, add a panel.
2) Create 2 label controls on the form called label1 and label2.
3) Drag label1 to the panel.
4) Drag label2 to the panel.
5) Set the Dock property of both to bottom.
6) Doesn't matter, in what order u perform the step 5, label2 will always be at the bottommost position.
Now repeat the same procedure as above, but change the following steps.
2) Create 2 label controls directly on the panel called label1 and label2.
6) Doesn't matter, in what order u perform the step 5, label1 will always be at the bottommost position.
SO u can clearly see that docking behavior is changed in both cases. In step6 of first one, label2 will always be docked at the bottommost position, while in 2nd case, label1 will always be docked at the bottommost position. Is this behavior justified and can developers rely on this type of uncertain behavior. Plz. comment on that. If this is really a problem, how can i convey it to Microsoft.
The practical problem, i'm facing due to this uncertain and unjustified behavior is that:
1) I have made a custom container control, which has a label(acting as a caption). This label must always be docked to the topmost position in this control, so i have set Dock=Top for this label.
2) But due to dotnet docking behavior, when a user adds another control to this custom container and sets the dock property of that control to top, it gets docked at the topmost position and the caption label gets one level down, while it is not expected to change the position inside the control.
Is there another solution available, so that my label always stays at the topmost docking position.
|