Solved

Resiable Controls, Windows

Posted on 2010-08-19
2
395 Views
Last Modified: 2013-12-26
Hello,
I want to create an object, either a form or another type of container that I can place a status bar on with a grab handle to resize the container.  The container will have a status bar and a list controll.  I want to have the container resizable using the status bar grab handle, but I don't want the container to be sizable by clicking on the top,left or right corner of teh containger (form, panel, etc.) - I can not get any panel to be resizable using a status bar, or for that matter resizabe at all.  I can get it working the way I want by putting a status bar on a form, then filling the form with the list boxb but then the user can resize the form by clicking on one edge of the form (top, left, right)..   in effect, I want a container that will resize to the right and down, but not from the top or left.

I'm trying to acccomplist a drop down combo then displays the list box with various values in it.  I hope that's clear, if not let me know....
0
Comment
Question by:DRRobinson
2 Comments
 
LVL 3

Accepted Solution

by:
kooswillem earned 500 total points
ID: 33483023
Just prevent the left and top values from being edited like in this example. Only the ratio's need some adjusting, but you should be able to figure that out.

Namespace WindowsFormsApplication2
      Public Partial Class Form1
            Inherits Form
            Const MAXIMUM As Integer = 800
            Private left As Integer = 0, top As Integer = 0, width As Integer = 0, height As Integer = 0, deltaResize As Integer = 0
            Private startResize As Boolean = False
            Public Sub New()
                  InitializeComponent()
            End Sub

            Private Sub Form1_ResizeEnd(sender As Object, e As EventArgs)
                  If Form1.ActiveForm.Left <> left Then
                        Form1.ActiveForm.Left = left
                  End If
                  If Form1.ActiveForm.Top <> top Then
                        Form1.ActiveForm.Top = top
                  End If
                  If Form1.ActiveForm.Width > MAXIMUM Then
                        Form1.ActiveForm.Width = MAXIMUM
                  End If

                  Dim formResize As Integer = width - Form1.ActiveForm.Width
                  Dim ratioFormBar As Single = MAXIMUM / progressBar1.Width
                  Try
                        progressBar1.Value = progressBar1.Value - CInt(Math.Floor(formResize / ratioFormBar))
                  Catch
                        If progressBar1.Value - CInt(Math.Floor(formResize / ratioFormBar)) < 0 Then
                              progressBar1.Value = 0
                        End If
                        If progressBar1.Value - CInt(Math.Floor(formResize / ratioFormBar)) > MAXIMUM Then
                              progressBar1.Value = MAXIMUM
                        End If
                  End Try
            End Sub

            Private Sub Form1_ResizeBegin(sender As Object, e As EventArgs)
                  If Form1.ActiveForm IsNot Nothing Then
                        left = Form1.ActiveForm.Left
                        top = Form1.ActiveForm.Top
                        width = Form1.ActiveForm.Width
                        height = Form1.ActiveForm.Height
                  End If
            End Sub

            Private Sub Form1_Activated(sender As Object, e As EventArgs)
                  progressBar1.Value = Form1.ActiveForm.Left
                  progressBar1.Maximum = MAXIMUM
                  width = Form1.ActiveForm.Width
                  height = Form1.ActiveForm.Height

            End Sub

            Private Sub progressBar1_MouseDown(sender As Object, e As MouseEventArgs)
                  If e.Button = MouseButtons.Left Then
                        deltaResize = e.X
                        startResize = True
                  End If
            End Sub

            Private Sub progressBar1_MouseUp(sender As Object, e As MouseEventArgs)
                  If e.Button = MouseButtons.Left AndAlso startResize Then
                        Dim mouseMovement As Integer = e.X - deltaResize
                        Dim ratioFormBar As Single = MAXIMUM / progressBar1.Width
                        Form1.ActiveForm.Width = Form1.ActiveForm.Width + CInt(Math.Floor(mouseMovement * ratioFormBar))
                        startResize = True
                  End If

            End Sub
      End Class
End Namespace
0
 

Author Closing Comment

by:DRRobinson
ID: 33484436
Thanks for the note.  I guess I should have figured that out on my own.. That's why I like EE so much.. it's a nice forum for teh lone programmer to bounce ideas off others...

Thanks again...
0

Featured Post

ScreenConnect 6.0 Free Trial

At ScreenConnect, partner feedback doesn't fall on deaf ears. We collected partner suggestions off of their virtual wish list and transformed them into one game-changing release: ScreenConnect 6.0. Explore all of the extras and enhancements for yourself!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
The viewer will learn how to use NetBeans IDE 8.0 for Windows to connect to a MySQL database. Open Services Panel: Create a new connection using New Connection Wizard: Create a test database called eetutorial: Create a new test tabel called ee…

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question