Solved

Resiable Controls, Windows

Posted on 2010-08-19
2
393 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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Update (December 2011): Since this article was published, the things have changed for good for Android native developers. The Sequoyah Project (http://www.eclipse.org/sequoyah/) automates most of the tasks discussed in this article. You can even fin…
Jaspersoft Studio is a plugin for Eclipse that lets you create reports from a datasource.  In this article, we'll go over creating a report from a default template and setting up a datasource that connects to your database.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
The viewer will learn how to synchronize PHP projects with a remote server in NetBeans IDE 8.0 for Windows.

746 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

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now