RadChildFrom Minimum Size

7 posts, 1 answers
  1. Afaan
    Afaan avatar
    17 posts
    Member since:
    Sep 2008

    Posted 03 Nov 2008 Link to this post

    Hello i am using several RadForms as child forms for an mdi. Part of this is letting the user decide the size of each RadForm by entering values in textboxes(height and width textboxes). I have tried to put the resizing of forms in the text changed events, but that does not seem to be working, as the radform seems to default to a different size before the user has a chance to enter the full value. Why is this? I have tried setting the minimum size of these radforms to be really small as well, but it still seems to default to some other values. On a seperate note, i had this functionality with the resizing in the Leave event of the textbox. However the problem with that is if the user has entered values for a child form, and clicks on a different child form, it resizes the new child form instead. All these child forms are being created at run time and i am using Winforms Q2 SP1 2008. A work around for either one of those cases would be good. Thanks in advance.
  2. John
    John avatar
    30 posts
    Member since:
    Aug 2008

    Posted 04 Nov 2008 Link to this post

    Hi Afaan,
        It sounds like you are accepting the user input as they type which is resizing the form before they can finish.  The easiest way to accomplish this is add an apply button and commit the new Height/Width values in that event.

    Hope this helps,
    John
  3. UI for WinForms is Visual Studio 2017 Ready
  4. Afaan
    Afaan avatar
    17 posts
    Member since:
    Sep 2008

    Posted 04 Nov 2008 Link to this post

    Hello, i have considered adding an accept button, but the ideal case is to get the microsoft visual studio properties kind of feel, the way i already described. Thanks for the reply.
  5. John
    John avatar
    30 posts
    Member since:
    Aug 2008

    Posted 04 Nov 2008 Link to this post

    I can understand not wanting to include an apply button.  So I created a project to replicate your setup with an MDIParent and two RadForms.  When I make a change to the form size it applies appropriately on Leave.  If you can attach a sample project this might help identify the problem you are experiencing.

    Thanks,
    John
  6. Afaan
    Afaan avatar
    17 posts
    Member since:
    Sep 2008

    Posted 05 Nov 2008 Link to this post

    Hi, thanks for your concern. How are you calling the child form in your scenario when resizing, using this.activemdichild? or by its name? I am using this.activemdichild in my project, since i have several instances being created at run time and can not call the child forms by name.  The problem occurs when you you leave, and click on another child form. I would like it to still resize the previously selected form, however since now the active form is different, it resizes the newly selected form. Here is the code for test project i created to better show what i mean.

    public partial class Form1 : Telerik.WinControls.UI.ShapedForm     
        {     
            private Telerik.WinControls.RadForm test;     
        
            public Form1()     
            {     
                InitialzeComponent();     
            }     
        
            private void Form1_Load(object sender, EventArgs e)     
            {     
                for (int count = 0; count < 4; count++)     
                {     
                    test = new Telerik.WinControls.RadForm();     
                    test.Text=count.ToString();     
                    test.MdiParent = this;     
                    test.Enter += new EventHandler(test_Enter);     
                    test.Show();     
                }     
            }     
        
            void test_Enter(object sender, EventArgs e)     
            {     
                textBox3.Text = this.ActiveMdiChild.Text;     
            }            
        
            private void textBox1_Leave(object sender, EventArgs e)     
            {     
                if (textBox1.Text != "" && Convert.ToInt32(textBox1.Text) > 0)     
                {     
                    this.ActiveMdiChild.Width = Convert.ToInt32(textBox1.Text);     
                }     
            }     
        
            private void textBox2_Leave(object sender, EventArgs e)     
            {     
                if (textBox2.Text != "" && Convert.ToInt32(textBox2.Text) > 0)     
                {     
                    this.ActiveMdiChild.Height = Convert.ToInt32(textBox2.Text);     
                }     
            }     
        }    
     
  7. Answer
    John
    John avatar
    30 posts
    Member since:
    Aug 2008

    Posted 05 Nov 2008 Link to this post

    I see the problem.  So a way to accomplish what you are trying to do is to capture the ActiveMDIChild when you enter the text controls. See my changes below:

        public partial class Form1 : Telerik.WinControls.UI.ShapedForm  
        {  
            private Telerik.WinControls.RadForm test;  
     
            //placeholder to know which child you are working with  
            private Telerik.WinControls.RadForm activeChildForm;  
     
            public Form1()  
            {  
                InitializeComponent();  
                //setup event to capture entering both textbox1 and textbox2  
                textBox1.Enter += new EventHandler(textBoxSizes_Enter);  
            }  
     
            private void Form1_Load(object sender, EventArgs e)  
            {  
                for (int count = 0; count < 4; count++)  
                {  
                    test = new Telerik.WinControls.RadForm();  
                    test.Text = count.ToString();  
                    test.MdiParent = this;  
                    test.Enter += new EventHandler(test_Enter);  
                    test.Show();  
                }  
            }  
     
            void test_Enter(object sender, EventArgs e)  
            {  
                             
            }  
     
            private void textBox1_Leave(object sender, EventArgs e)  
            {  
                if (textBox1.Text != "" && Convert.ToInt32(textBox1.Text) > 0)  
                {  
                    activeChildForm.Width = Convert.ToInt32(textBox1.Text);  
                }  
            }  
     
            private void textBox2_Leave(object sender, EventArgs e)  
            {  
                if (textBox2.Text != "" && Convert.ToInt32(textBox2.Text) > 0)  
                {  
                    activeChildForm.Height = Convert.ToInt32(textBox2.Text);  
                }  
            }  
     
            private void textBoxSizes_Enter(object sender, EventArgs e)  
            {  
                //caputure the active child so you apply settings correctly  
                activeChildForm = this.ActiveMdiChild as RadForm;  
            }  
        } 

    You will want to ensure that activeChildForm is not null before doing the assignments.  Let me know if this doesn't help.

    John
  8. Afaan
    Afaan avatar
    17 posts
    Member since:
    Sep 2008

    Posted 05 Nov 2008 Link to this post

    Thanks for the solution. It is much more reliable than my version as i had the active form captured in a string by title.
Back to Top
UI for WinForms is Visual Studio 2017 Ready