Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Activating current control in UserControl
Message
De
02/11/2008 13:42:28
 
 
À
02/11/2008 09:25:01
Information générale
Forum:
ASP.NET
Catégorie:
Formulaires
Versions des environnements
Environment:
C# 3.0
OS:
Vista
Network:
Windows 2008 Server
Database:
MS SQL Server
Divers
Thread ID:
01358315
Message ID:
01359008
Vues:
36
Hi,

I think the behavior is 'by design' (see https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=115953)
If the object in question is a container than 'ActiveControl' returns the container itself (not the control within the container). You probably need to implement the same type of logic for the container itself (i.e track the Container.ActiveControl)

>Bonnie,
>
>>I don't know Andrus, what I proposed works for me in your scenario. Your mistake I think is using grid.Focus(), which is not what I had suggested to begin with. I said to use "ActiveControl", which would apparently, in the case of a grid, be the cell you were in.
>
>Than you.
>I modified and tried your code below but TextBox in grid is still not activated on form re-activation.
>
>No idea what I'm doing wrong.
>
>
using System.Windows.Forms;
>using System.Collections.Generic;
>using System;
>
>public class Test
>{
>    static void Main()
>    {
>        Application.Run(new MainForm());
>    }
>}
>
>class MainForm : Form
>{
>    public MainForm()
>    {
>        WindowState = FormWindowState.Maximized;
>        IsMdiContainer = true;
>        Form frm = new Childform();
>        frm.MdiParent = this;
>        frm.Show();
>        Form frm2 = new Childform();
>        frm2.MdiParent = this;
>        frm2.Show();
>        frm2.Left = 2000;
>    }
>}
>
>class Childform : Form
>{
>    DataGridView grid;
>    Control LastFocus = null;
>
>    public Childform()
>    {
>        ToolStripContainer tc = new ToolStripContainer();
>
>        grid = new DataGridView();
>        grid.Columns.Add(new DataGridViewTextBoxColumn());
>        grid.EditMode = DataGridViewEditMode.EditOnEnter;
>        grid.Top = 120;
>        grid.Height = 300;
>        Controls.Add(tc);
>        tc.ContentPanel.Controls.Add(new MyUserControl());
>
>        tc.ContentPanel.Controls.Add(grid);
>        this.Activated += new EventHandler(Childform_Activated);
>        this.Deactivate += new EventHandler(Childform_Deactivate);
>    }
>
>    void Childform_Activated(object sender, EventArgs e)
>    {
>        if (this.LastFocus != null)
>            this.LastFocus.Focus();
>    }
>
>    void Childform_Deactivate(object sender, EventArgs e)
>    {
>        this.LastFocus = this.ActiveControl;
>    }
>}
>
>class MyUserControl : UserControl
>{
>    internal MyUserControl()
>    {
>        Height = 100;
>        Controls.Add(new TextBox());
>    }
>}
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform