Interface And Graphics :: Dock Or Anchor Controls So That They Resize Themselves Accordingly When Form Is Resized
Feb 12, 2011
we all know how to dock or anchor controls so that they resize themselves accordingly when a form is resized. It works fine till we have rows of controls on left and right size of the form. But what if have three columns (Columns as in visual sense. I'm not talking about any column control containing other controls) of controls? For example a form having a bunch of controls in the left side, a bunch in the middle and a bunch in the right. There may be a few more bunches in the middle. Now while resizing the form, I want the controls to resize accordingly as well as change their positions to make space for the previous bunch of controls that are resizing.I mean, while the user increases the form size horizontally, the controls of the second bunch should resize and at the same time they should move right because the controls of the first bunch are increasing horizontally too. When the user decreases the form size horizontally the same thing should occur in the reverse order.I can manage it somehow using nested splitcontainers but that's too cumbersome. I would like to know if there's some better way to achieve it, like setting some property etc.?
From this forum I saw some discussions about form/controls resizing issue with different resolution screen setting. Most suggestions are using Anchor/Dock. My application's form has 10 group boxes and some buttons. In each group box there are 5 Text boxes and other more controls. I tried anchor and dock but couldn't make it work. My questions are -
1, How to re-size form and all individual controls as well?
2, If anchor/Dock are suggested, do i have to use both of them or just one? it seems to me there is no big difference between them.
I created a basic winform project where I want to handle all resizing without writing a single line of code. I set up controls using dock/anchor. They all work properly, until I add a custom UserControl. When I first press F5, the project works fine. However when I get back to the IDE some (but not all) controls which have anchor right/bottom are resized/moved into positions and sizes not previously defined. Some cannot even be restored as they are moved permanently below the container's boundary with coordinates above 2000. If I fiddle around and test the project many times, all controls with right/bottom anchoring will go haywire eventually.
If the custom UserControl has controls inside with right/bottom anchoring those also get resized in weird ways. Adding the controls again solves the problem temporarily. It is the IDE that moves these controls around since these movements are displayed in the undo stack right after I exit testing the project (however,undoing these steps only messes things up even more).I am using VB 2010 on Windows 7 x64.
I have a code method that I wrote in vb6 that works on every screensize and resolution combo...however vb.net is not letting me do this. Here is what I do. upon form load at program startup I gather all of the data of the controls (height,width,top,left,font size) prior to the form actually resizing and I store those in a listbox that is not visible. Then when the form resize is called I proportion all of the controls from their old positions versus the new form size.
Back in the VB6 days, I could count on frmWhatever_Resize() to be fired when a form is loaded. That doesn't still seem to be the case. Since my resize event is filled with all the code I want that adjusts the size and placement of things, I decided to just call it from the end of the form's load event. That has no affect. I'm guessing that the form isn't actually shown until form_load is finished?
is there some other event that is fired when a form is shown, so I can call my resize code there?
I downloaded the custom made OvalShape control for Visual Studio 2005, and I really like it. One problem I have, is that I would like to have a label docked inside the Oval, as if it was a Panel or a GroupBox or pretty much any other control. With the other controls it does this automatically when I move the control inside them, but when I move the label inside the Oval, it won't "stick" to it. The OvalShape will move around and change size quite a lot in my app, so it would be nice ot to have to add a snippet of code after every movement of the OvalShape.
I was able to search this code : [URL] but i need a help in modifying this code so that i can re-size the form from bottom left corner the code block below is resizing the from from bottom right corner i need that to be modified to convert it to bottom left corner
I have a form containing two panels. In both panels there are two labels and textboxes. I set the 'Center In Form' property of the labels and textboxes to 'Horizontally' and 'Vertically' in design time respectively. But as the form is resizable, when the size of the form is increased or decreased at runtime the controls are no longer center aligned in the panels. How can I handle this problem (provided th
I have a Main form that has a split container in it. In Panel1 there is a treeview control. Panel2 is initally blank when Main loads. Upon clicking on one of the nodes in the treeview a form will load in panel2 and adjust the location of the controls based on the size of panel2. The controls are all in a panel themselves so that I am only moving a single object.
Moving the controls when the form in panel2 initially loads works great. But if the size of the Main for changes then the only way to get the controls to reposition is to click on the treeview and reload the form in panel 2.Code for the tree.
Code: Private Sub TreeView1_NodeMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick Me.SplitContainer1.Panel2.Controls.Clear()
[code]....
I tried to with code in the panel2_resize bit i got an error as soon as I clicked on the treeview as i did not know which form was currently loaded. What would be a method to accomplish repositioning the controls in panel2 regardless of which form is loaded?
How to implement resize begin and end on controls the way a Form does. I had the idea that this can be accomplished using windows messages API (WM_ENTERSIZEMOVE and WM_EXITSIZEMOVE) but most of the samples I've seen so far are for windows. The reason for this is because I have a control that needs to re-render an image. The controll is inside a split container. The split container has only the Resize event. Is there any way this can be done?
I need to let the end user move and resize objects (like a textbox or button). There are several examples that demonstrate this in VB, but not in VB Express 2008, based upon VB.net.It looks like earlier you needed to access Windows API, but these calls does not work in VB.net. I understand that these call are replaced by "native" .net calls, but I cannot find any that does the job.
A typial example from old VB is:
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
I want to know if there is a way I can resize panels manually while an application is running. Basically I have one master panel you click a button add more panels to it. I want the child panels to be movable and resizable in the parent panel.
In VS 2005, I have a form with a few controls (comboboxes and labels) that won't display when the form loads. The controls show up as transparent "holes" in the form, through which I can see my desktop. As soon as I move the form, or left-click on the title bar for about a second (without moving the nouse) the controls render correctly.What do I need to do to get these controls to display correctly, short of forcing a resize?
Pretending I have a class that inherits off Control, how would I handle the parent form's Resize and Move events within the control? I have a painting glitch that happens when the form is resized or moved. Right now in the form I just have:
vb.net Private Sub frmMain_ResizeMove(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Resize, Me.Move Me.Refresh()End Sub
But this can't be the proper way to do it, considering Refresh() invalidates all children (will be slow and flashing if the form has lots of controls). I want to basically do the above code inside the control.
Edit:This is the glitch after a resize of the parent form:
And this is what the button is supposed to look like:
Also, I experience this issue if something like a message box is dragged over top of it. How can I remedy these issues by forcing a repaint?
I'm working on a design project where I have to use a Graphical User Interface that contains a drag and drop form. It consists of having a window dropped on a wall. Both of them are images to scale. I would like to know what kind of code I would have to use to show the x and y coordinates of one of the points of my window when dragged so when I drop it, I'm dropping in it on the desired coordinate of the wall.
I'm having some problems with custom controls and anchors today. I made a custom control containing a picture box and a vertical scroll bar. When I adjust the form the custom control outer area (the blank part) will adjust to the size of the form but the picture box and scroll bar do not. I have the picture box anchored to all sides and the vertical scroll bar anchored to the right side. They just will not adjust with the control when it is resized on the form.
I have a project running in my old computer. It has panels,textboxes,labels etc. It occupies the full screen when running.I bought a new computer with a widescreen format. When I run this project it only occupies 2/3 of the screen.
What properties of the controls must I use so that I can run this program in any size computer and still occupy the full screen i.e the size is proportionately resized depending on screen size.
Im using VB 2005 express edition. Im trying to draw rubber band lines and rectangles using controls like buttons in one form. My problem is, i did the rubberband lines and rectangles on diff forms.Here's the snippet code for rubberband rectangle:
Code: Private Sub MyDrawReversibleRectangle(ByVal p1 As Point, ByVal p2 As Point, ByVal dashed As Boolean)
The project I'm working on (the same one I'm always asking about) has tabs as the main navigation. I've made some User Controls to sit above the tabs in an attempt to reduce the number of overall controls that are being used (to great success). Now, however, there's one control that overlaps some controls on a tab that are obscured by my newest UControl and I want to make the background transparent.I've seen that AtmaWeapon keeps pointing people to this page detailing how to make the background transparent. That's great and it worked for me. All I did was create the
Code:Protected Overrides ReadOnly Property CreateParams() AsSystem.Windows.Forms.CreateParamsand it worked the way I wanted. Yay. I did write the rest of it too as well as part from a post I saw on the msdn forums, but they weren't needed to get the effect I wanted.However, I've got a number of PictureBoxes on this UControl that should have a BorderStyle of "Fixed3D". However, when this UControl is repainted the borderstyle doesn't reflect this (Note to self: don't .Refresh() a control inside its own .Paint() event ). This doesn't happen the FIRST time they become visible, but only when they've shown up and are made to redraw (like toggling visibility). If the border changes programmatically they look fine
I'm trying to figure out how to make dragable controls like the ones in paint.net. see the attachment. they look like forms kind of because they have the red x at the top like a form does, but it kind of looks like a custom control too. Is it possible to make these types of controls in VB.Net 2008.
If I have a control, in this case a button, can I restrict the area it considers valid for text?
In the attached image, the left and right arrows are custom drawn in the paint even, I also have a scroll timer that scrolls the text if the length exceeds the buttons width as measured by Graphics.MeasureString.
I want to restrict the text from red line to red line so when the text scrolls it does not interfere with the arrow indicators, can the text area be overridden to some custom region?
I am need to drag drop listboxes with connection line in vb.net. If the listbox move then connection line should also move. I have attached picture as wel
I'm developing a VB.Net 2008 application which uses background images (in jpg format) in some forms and controls, but this makes the application to use a lot of ram. My question is how to make it to use the less possible.
I am using Visual Web Developer 2008 Express and making a Webform. I want to arrange my labels and drop down listboxes in a table to keep them together on the form in a neatly manner. If I use the 'ToolBox' on the side and drag a HTML table to the workspace I get a nicely formatted table with 3 rows and 3 columns. And I can drag and drop my labels/listboxes into these columns and all is fine and good.
If I use the 'ToolBox' and drag a ASP.Net table to the workspace it starts as just a boarder with '###' inside of it, which I cannot drap and drop controls into. I'm not sure how to place controls into it. I figured out that you can add the Rows - then Columns in the properties window, but that just adds more cells which have the '###' in them. I can make it work with the HTML table, but I just want to know if I can do the same with the ASP.net table.
I have been given a project to update software written in Visual Basic. The software and some files are enclosed in a folder and was written 3 years ago. I have no clue what to do. All I have been asked to include more controls. The user interface allows user to select three processes by clicking on the buttons on user interface. The new requirements is to add two more buttons. There is not much information so I have to use only the resources available. When I tried to open the project, visual studio prompted to convert the project so its compatible with current version. I could open the project but dont know what to do from there. Please guide me towards the right direction. If the project folder is required please advise me how to attach it too.