CORRECÇÃO: O valor da propriedade ImeMode automaticamente altera para o valor desligado no .NET Framework 2.0

Traduções de Artigos Traduções de Artigos
Artigo: 939783 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Considere o seguinte cenário. Uma aplicação criada no Microsoft .NET Framework 2.0 contém um controlo do Microsoft Windows Forms. Definir a propriedade ImeMode do controlo para um valor específico não é o valor NoControl . O foco estiver no controlo. Em seguida, efectue uma das seguintes operações:
  • Mover o foco para outra janela. Em seguida, move o foco volta para o controlo.
  • Minimize a janela que contém o controlo. Em seguida, restaurar a janela.
Neste cenário, o valor da propriedade ImeMode muda automaticamente para o valor inactivo .

Resolução

Informações sobre a correcção

Uma correcção suportada está agora disponível da Microsoft. Contudo, destina-se a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico. Esta correcção poderá submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde pelo próximo service pack do .NET Framework 2.0 que contenha esta correcção.

Para resolver este problema imediatamente, contacte o suporte técnico da Microsoft para obter a correcção. Para obter uma lista completa dos números de telefone de suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota Em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados, se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos normais do suporte serão aplicados a problemas adicionais e questões de suporte que não se enquadrem na atualização específica em questão.

Pré-requisitos

Tem de ter o .NET Framework 2.0 instalado para aplicar esta correcção.

Requisito de reinício

Não é necessário reiniciar o computador depois de aplicar esta correcção.

Informações sobre substituição de correcções

Esta correcção não substitui quaisquer outras correcções.

Informações do ficheiro

A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas na hora universal coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário no item data e hora no painel de controlo.
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempo
System.Windows.Forms.dll2.0.50727.8995,152,76830 De Junho de 200703: 28

Como contornar

Para contornar este problema, implemente o seguinte código.
public partial class Form1 : Form
{
    private Control focusedControl;

    private ImeMode propIme;

    public Form1()
    {
        InitializeComponent();

        this.Activated += new EventHandler(Form1_Activated);
        this.Deactivate += new EventHandler(Form1_Deactivate);
    }

    private void Form1_Activated(object sender, EventArgs e)
    {
        if (focusedControl != null)
        {
            focusedControl.ImeMode = propIme;
        }
    }

    private void Form1_Deactivate(object sender, EventArgs e)
    {
        Save_ImeMode();
    }

    private void Save_ImeMode()
    {
        Control tmpFocusedControl = null;
        foreach (Control c in Controls)
        {
            if (c.Focused)
            {
                if (c is TextBox)
                {
                    tmpFocusedControl = c as TextBox;
                    break;
                }
            }
            if (c.HasChildren)
            {
                foreach (Control c2 in c.Controls)
                {
                    if (c2.Focused && c2 is TextBox)
                    {
                        tmpFocusedControl = c2 as TextBox;
                        break;
                    }
                }
            }
        }
        if (tmpFocusedControl != null)
        {
            focusedControl = tmpFocusedControl;
            propIme = focusedControl.ImeMode;
        }
    }

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WM_SYSCOMMAND)
        {
            if (m.WParam.ToInt32() == SC_MINIMIZE)
            {
                Save_ImeMode();
            }
        }
        base.WndProc(ref m);
    }

    const int SC_MINIMIZE = 0xF020;
    const int WM_SYSCOMMAND = 0x0112;
}

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Mais Informação

Para obter mais informações sobre a terminologia de actualização de software, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
824684Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

Propriedades

Artigo: 939783 - Última revisão: 23 de julho de 2007 - Revisão: 1.2
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 2.0
Palavras-chave: 
kbmt kbvistasp1fix kbexpertiseadvanced kbfix kbpubtypekc kbqfe kbhotfixserver KB939783 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 939783

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com