Issue Related to Overlapping .Net Controls in WindowsXP - c#

I have developed a windows Application in .Net2010 in Windows 7, Windows Forms and Controls looks Perfact in Windows 7, but in WindowsXP Text containing in Textbox hides first character overlaps between Label and Textbox as shown in Following picture:

The Label controls that you're using to provide a caption for each of the TextBox and ComboBox controls are extending out over the top of the TextBox and ComboBox controls. Their background color is the same as your form (the brownish-gray color).
One possible solution is to change the Z order of your controls so that the Label controls are always in the background. The controls will still overlap, but the TextBox and ComboBox controls will overlap the Label controls instead of the other way around.
That would work fine as long as there was no text on the Label controls getting covered up. That's rather unlikely, and you certainly count on it. Instead, you need to redesign your form so that there is plenty of extra space between controls. You can't jam things up that close to one another, or there won't be any room for expansion and they'll have no choice but to overlap.
Move the controls around and give them some breathing room. The aptly-named Padding property is very useful for this.

You could use TableLayoutPanel to place your controls in a good manner
Go here to read about it.
With this you could use Docking and Anchoring properties of those controls to grow or shrink them as the space changes.

Related

WinForms UserControl gets cut off when running

I'm having a lot of difficulty with WinForms and sizing of user controls. We've got a DataGrid, with some buttons underneath it, in a custom User Control.
Everything is anchored correctly. As in, when you resize the control, the buttons stay anchored to their proper sides, and the data grid fills the rest.
It even works when adding it to our main form:
Then, when we run the app, it gets cut off:
I've tried:
Docking
Anchoring
Changing the AutoSize property of the control, and the control as used in the main form
But nothing is getting it to act like it does in the designer.
Any help is really appreciated.
Use Split Container and put dataGridView on top and bottom insert your buttons and set Panel that is in bottom Fixed.
Another option is to use TableLayoutPanel
More information :
Designing the Layout of Windows Forms using a TableLayoutPanel, with auto-expand panels
There were obvious issues with the WinForms app, WRT scaling and fonts. We switched over to WPF and everything is working as expected.

How to fix translated text over controls in Winforms?

I have got labels in my Windows Forms application which are placed next to controls.
When I change my language options to another language, the text needs more space now it covers my control.
Are there any ways to fix this problem?
No magic here I'm afraid. You have to try making your labels as (reasonably) wide as possible to accomodate each of your supported languages. Don't use AutoSize property here.
If labels appears on the left, have your text aligned to the right using the TextAlign property. This way they should always appear close to your control without ever overlapping them.
Also try to use containers to design your forms: TableLayoutPanel, FlowLayoutPanel. Controls that are placed in their cells, are autosized and wordwrapped correctly in most cases.

Perform some action when tabbing between labels?

I know that label can't receive focus, it doesn't seem to be responsive to tab switching. But all I need is perform some action when user uses tab consequently on a form which has only labels. For example, each label has an associated textbox but this textbox is hidden when the label is visible and vice-versa. What I want is allowing user to use tab to switch between the hidden textboxes on the form, normally, all the textboxes are hidden while all the labels are shown, the labels are supposed to be focusable so that when using tab, it can know that (as some event) to show the associated textbox and hide itself, when switching to another label, the current label whose the associated textbox is shown will become visible again and its associated textbox will become hidden.
I have to implement this kind of 2 in 1 control (textbox and label in a composited control) because I just want to show only the text (no border and background) as if the textbox has a transparent background and only show the textbox (and hide the label) when user need to edit (start by clicking on the field or using tab). This should have been easier for me if there was a transparent background textbox but there isn't a decent one in the world of windows forms. Please notice that I also know of the alpha blend transparent textbox presented in an article in codeproject but it can't meet my need because the text is rendered wrong with ugly border around the text path (some kind of missing antialiasing but it's even worse than that).
I'm really pity if this mechanism can't be implemented, the forms look better when all the fields seem to show info only but a click or tab switch can let user jump in edit mode.
I hope there is some solution out there. Thank you in advance.
I found this solution by a whim in my mind. I didn't think there was such a solution but it does help solve my problem (and I'm sure many others will benefit from it). Simply I have to create my own Label inheriting UserControl. I didn't thought of UserControl before and it is very helpful. Focusability, transparent background, borderlessness are all which can be done easily to a UserControl. The only custom feature I have to do myself is rendering the text which is also very simple and there are many ways to do. I just add a Label to the UserControl and set Label's Dock to DockStyle.Fill, adjust the height of the UserControl properly and that's all.
Thank God helping me think of UserControl before trying any other complicated solution such as listening to TAB and SHIFT + TAB keypress events.

How to create an overlay part of control in Winforms C#?

I need to create a custom control that has an expandable part as a panel and a textbox part. The expandable part is a panel, that will either be visible or invisible. But when the panel is visible/expanded directly under the textbox, I do not want the adjacent controls to shift down below the panel, but the panel should just overlay the controls that are there just under the custom control. How would I implement this in Winforms C# project?
I am open to using user control for this scenario.
Thanks
Sunil
I think your implementation of expanding and collapsing is not the best, because you are just overlaying the controls instead of hiding them.
One of the disadvantages is that the overlaid controls might by focussed by pressing tab and they might have a value which I think it is out of target.
I would suggest another implementation by creating two panels (one for the header and another one for the content) and when the collapse button is pressed then the content's panel will be hidden by sitting its Visible property to false and its Hight to 0.

C#: Anchored Panel won't resize properly

I've a strange problem regarding auto sizing of a panel in a user control. This panel is anchored to all 4 sides of the user control.
But the anchoring not always works as it should:
If the user control is resized by resizing the form, the right and bottom anchors don't work. But if the control is resized by using a splitter which is in the form, it works correctly.
All other controls which are also affected by resizing work correctly, just this panel won't do.
I can't see the difference between resizing through a splitter and through a form.
Setting the size manually in the OnResize of the UserControl only works if the resizing is done by moving the splitter. If the resizing occurs by resizing the form, the heigth and the width of the panel won't change to the new values.
Edit: To make it more clear: The user control is added to a TabPage and set to Dock=DockType.Fill.
Edit2: To make it more complicated: This is the hierarchy the control is used:
The Form contains a splitter with 2 controls (A and B). (B) contains a user control (C) with a splitContainer. The split container->panel1 in (C) contains a tabcontrol (D). This tabcontrol (D) contains a user control (E) (in a tabpage) . This user control (E) has a splitcontainer (F) in which another usercontrol with a tabControl (G) is placed. This tabcontrol (G) has tabpages, and in this pages is the described user control (H) placed.
If I place the control (H) directly to the panel in the splitcontainer (C) everything works fine. Since all controls which are added to a splitcontainer or a tabpage are set to docktype=fill, I cannot see why the last control has this problems.
Is there any limitation in the Windows Forms framework which limits the amount of child controls?
Edit: I have uploaded a TestApplication with which you can reproduce this issue.
http://rapidshare.de/files/49092516/TestApplication.zip.html
It occurs only under Vista. Win XP and 7 work properly...
If you resize the form, the textBox with the "..." button won't resize, but if you resize via the vertical splitContainer, it works.
There is a bug with deep nesting where the kernel runs out of stack space causing resizing, docking and anchoring to fail silently.
See https://web.archive.org/web/20140818095718/http://support.microsoft.com/kb/953934
You have talked about both "anchor" and "dock", which can serve similar purposes but act differently. Your problem may be that you are trying to do both, and this is interfering with the behavior you want. If not, perhaps try switching from the one to the other.
It sounds like you've double checked the ansectery of the control, but did you examine it with: View->Other Windows->Document Outline (a very handy tool I only recently discovered)?
Finally, while it doesn't directly solve your problem, it sounds like you have a very complicated UI, and your users may benefit if you were to spend some time to consider if you could simplify the UI. Of course, I don't know your users or the purpose of the app, and what you have may be the best, but it sounds like it might be time to ask this question.
Good luck.
The problem is not the depth of nesting; controls can be nested arbitrarily deep. Anchoring and Docking generally do not play nicely with each other. I usually favor docking over anchoring, but, whichever solution you choose, you should probably avoid mixing them.

Categories