C# form adjusting screen resolution without sizable - c#

I have created a c# windows forms program with a Form which includes a Diagram, an image and Buttons. When I open the program the Form to big for the computer screen this is because the screen resolution is to big or to small.
How can I make the Form exactly right for each screen resolution type whiteout using sizable?

The problem is because you define (Pixel) sizes for your controls and therefore also your Form.
You can put your space consuming controls (diagrams, images) into Panels and then set the Dock property appropriately (on the controls and/or the panels) so that they scale out to their maximum size. This way you can reduce the size of the Form and because you define ratios rather than pixel numbers the controls/labels will expand as needed.
Depending on how you want it to look like you will have to play with different configurations (one or two controls in one label and then setting dock either to fill or left/right/top/bottom). There's also the SplitContainer control to help you achieve certain design goals.
Additionally, if you always want the perfectly scaled window, open the form in Maximised mode:
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

Related

How to set fixed size form to different resolutions

I have a problem and I couldn't find the answer anywhere on the internet. I am working on a project which its forms should be fixedsingle borderstyle. I don't want anyone to maximize or minimize the forms. So the real question is that I have two monitors and I'm working on the bigger one. When I start the program and slide the form to the smaller monitor, it looks exactly the same heigth and width. But I want the form to look smaller as the screen gets small or to look bigger if the screen gets bigger. Can you please help me?
You need to specify the Form.MinimumSize and Form.MaximumSize properties according to your needs. If you want to adjust the form dynamically at run time, you can hook the Form.Move event and set those properties relative to the screen's resolution minus the space used by the taskbar using Screen.WorkingArea. For a better user experience if the form is smaller than the screen size, I recommend disabling the maximize form button by setting Form.MaximizeBox to false.

how to set fix background image for windows form c#?

I have a windows form application.I set background image for this form and BackgroundImagelayout property is Stretch.When I put a button on the specified place on image and run this app,place moving and commix my design
What should I do? Help me please
This should work for you
Define the size of the form
make the form not resizable
make the image same size of the form
fix the background, not stretch
set the anchor property of objects to top left
If you are trying to make a layout that can size, you will need to break up your graphical elements into multiple parts, and then use layout controls with parts of the background image that can reposition as the form resizes.
For example, your form can have a tiled pattern, stretched gradient, or whatever you may have. Then, you can have a TableLayoutPanel that contains evenly spaced buttons and fields. The panel can have a background image of its own. The same goes for the other layout containers. You can nest the containers if the design requires it.
Then, you can set the various anchors and docking to keep the design uniform.

Keep form and controls proportion deployng a c# application for any screen size

I know this is an "already heard" problem: I have searched a lot but I did not find anything that cleared my mind.
I am developing a c# application with a GUI containing some controls like buttons (made with images) and text.
I developed it setting the main form size to 800x600 but now I need the application to work also on a 1920x1080 screen.
Two problems:
If I position a button near the top-right corner of the main form and set AnchorStyles to Top-Right, when I switch to the big screen, the button is (in proportion) much more close to top-left corner than in the little screen (because the anchor keeps the distance from the border). Is there a way to set a proportional distance from the border?
How can I scale the dimensions of the controls proportionally to the screen size? Shall I use AutoScaleMode like suggested here?
There is a way to add a capability to a form at design time - the ToolTip control does it, that makes properties available to every control on a form. These are called "Extender Providers"
http://msdn.microsoft.com/en-us/library/ms171836
You would want to look at the controls, and cache their sizes and fonts at design time, and the size of the form.
The provider would hang off the form.SizeChanged event at run time. When the size changes, you use the new and original (design time) sizes of the form to calculate and X and Y ratio. You then go through each control and use it's design time size and the ratios to determine its new size and font size. This can get flaky if you allow the user to select sizes that are not the same aspect ratio as your original.
Anyway, that is how it was done in Delphi, and everyone knows if you can do it in Delphi, you can do it in C# :)

Windows Forms: Auto Scale Application

I have a WinForms Application that was designed to support Full HD resolutions (so 1920x1080). Now this App is also supposed to run on a lower resolution: 1600x900.
Is there a way to let the application auto scale itself to fit the lower resolution? Like you would just downscale an image, basically resizing and relocating each control.
My current forms and panels have set their size to 1900x1080, so they just extend out of the screen on the lower resolution.
I have played around with AutoScaleModes and AutoSize, but the best I could get were Scrollbars so that you at least navigate through the forms. Is such a thing as downscaling an application even possible (retaining dimensions/ relative sizes and positions of the controls)?
Thanks in advance for any inputs on this!
If your main form starts in a maximized mode, it will adjust its size automagically.
But (and this is a huge "but" according to your question): the inner controls won't be scaled as you would see on a smartphone. WinForm is not "vector based" as WPF. If you have a fully loaded form in 1920x1080, when the main form is sized down, the controls won't fit and you will get scrollbars.
So the answer is: No.
The solution is available.
Form.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
and
Make all control autosize = false.
make a suitable size of your wish.
The property you are looking for is called Dock, it's a property of the controls.
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dock(v=vs.110).aspx
This basically tells the control how to fill the available space.
Creating a resolution independent application is not a simple logic. Everything in the window should be resize as per the selected resolution. Not only controls' size you have to change the font size also as per the changes. Here is the example how to create a resolution independent form using C# code. Another way is use DevExpress Tool. This tool provides Layout Countrol Container. You can place each control in separate layout item and assign the minimum and maximum size of control.

How do I make a child control re-anchor to its parent Form when it has been cut off on a small resolution screen?

I have a Windows Form with a default size of 1100x400, and I have a DataGridView control on it anchored to Top, Left, Bottom, Right.
Resizing the form on a screen with resolution higher than 1100x400 works fine, and the anchoring works well, resizing the DataGridView control as expected.
When I launch the form on a screen with resolution 800x600, the form is cut off, and made to fit the 800x600. The DataGridView is cut off, and cannot be seen entirely - it bleeds off the form to the right, so it's not respecting the right anchor. Resizing the form in this situation doesn't respect the anchoring settings for some reason: the DataGridView control does not resize when the form is resized.
Is there a way programmatically (on a resize event or something) to force the child DataGridView control to anchor to the sides of the form?
I've already tried calling a PerformLayout and Refresh in the Form's resize event but it's rather redundant, isn't it?
I would recommend you to play with MinimumSize/MaximumSize of the form and controls
We usually set MinimumSize for the form and controls to the value, when we can see at least small part of each control. There is no use to allow resizing a form to the size, when you cannot do any usefull work with the controls on it
As for MaximumSize for the form - I'll recommend you to try setting this value on Form_Load to be less or equal current screen resolution or current working area (which is the screen area without taskbars, docked windows, etc.)
see
Screen.PrimaryScreen.Bounds
Screen.PrimaryScreen.WorkingArea

Categories