?
Solved

Resiable Controls, Windows

Posted on 2010-08-19
2
Medium Priority
?
406 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 3

Accepted Solution

by:
kooswillem earned 2000 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

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

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

You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
The viewer will learn how to synchronize PHP projects with a remote server in NetBeans IDE 8.0 for Windows.
Suggested Courses
Course of the Month8 days, 1 hour left to enroll

765 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