Es la primera pregunta que me pasé un montón de tiempo. Buscar un número de sitios. no se encuentran soluciones.
Wu Nai se había obligado a ver el código fuente. También se hace referencia fuente MONO. Se encontró que la diferencia entre ellos es muy grande. Y vistazo al código fuente es muy difícil en VS
Sin función de búsqueda de clase. Sólo un archivo de clase para abrir un tipo de archivo de la mirada para ver qué otras clases sólo pueden paso a paso de este método es usado en el interior
. O porque no podía encontrar una buena manera de hacer eso? Con el tiempo me di por vencido este método. Solía descompilar el software Reflector.exe. Esta búsqueda de software
Encuentra muy conveniente. Al hacer clic para encontrar lo que desea ver. Voy a encontrar una clase de control de usuario, y puede leer un anulaciones que se encuentran
El WndProc
protegida desierta la anulación de la WndProc (ref el mensaje m)
{
SI (m.Msg == 7)
{
this.WmSetFocus (ref m);
}
else
{
base.WndProc (ref m);
}
}
Aquí si nada importante, lo haré punto this.WmSetFocus. Entonces base.WndProc (ref m). Haga clic en el salto a la clase base
El ContainerControl
protected void la anulación del WndProc (REF el mensaje m)
{
IF (m.Msg == 7.)
{
This.WmSetFocus (REF m);
}
la otra cosa
{
base.WndProc (REF m);
}
}
I de nuevo punto this.WmSetFocus, esta función alcanza
WmSetFocus privado void (REF el mensaje m)
{
si (base.HostedInWin32DialogManager!)
{
si (this.ActiveControl! = null)
{
base.WmImeSetFocus ();
si (this.ActiveControl.Visible!)
{
this.OnGotFocus (EventArgs.Empty);
}
This.FocusActiveControlInternal ();
} ......
}
Esta vez para ver el base.WmImeSetFocus (), yo estaba en éxtasis. Secreto debe estar ahí. Después de la de clics
Control.WmImeSetFocus ().
WmImeSetFocus vacíos internos ()
{
si (ImeModeConversion.InputLanguageTable = ImeModeConversion.UnsupportedTable!)
{
this.UpdateImeContextMode ();
}
}
接着再往下,
UpdateImeContextMode vacío interno ()
{
ImeMode [] inputLanguageTable = ImeModeConversion.InputLanguageTable;
if ((! base.DesignMode && (inputLanguageTable! = ImeModeConversion.UnsupportedTable)) &&
this.Focused)
{
ImeMode disable = ImeMode.Disable;
ImeMode cachedImeMode = this.CachedImeMode;
if (this.ImeSupported && this.CanEnableIme)
{
disable = (cachedImeMode == ImeMode.NoControl)? PropagatingImeMode:
cachedImeMode;
}
If ((this.CurrentImeContextMode = desactivar) && (deshabilitar = ImeMode.Inherit)!)
{
This.DisableImeModeChangedCount ++;
ImeMode propagatingImeMode = PropagatingImeMode;
tratar
{
ImeContext.SetImeStatus (deshabilitar, this.Handle);
}
Finalmente
{
this.DisableImeModeChangedCount--;
if ((desactivar == ImeMode.Disable) && (inputLanguageTable ==
ImeModeConversion.ChineseTable))
{
PropagatingImeMode = propagatingImeMode;
}
}
Si (cachedImeMode == ImeMode.NoControl)
{
si (this.CanEnableIme)
{
PropagatingImeMode = this.CurrentImeContextMode;
}
}
Más
{
si (this.CanEnableIme)
{
this.CachedImeMode = this.CurrentImeContextMode;
}
This.VerifyImeModeChanged (deshabilitar, this.CachedImeMode);
}
}
}
}
Aquí están todos los secretos y luego subirá. Estos códigos tienen que dejarme estupefacto. ¿Cómo lo consigo? código de MS no puede cambiarlo. Quiero volver a escribir una clase
Clase como él? Dios? En el interior con tanta clase, MSDN que simplemente no se puede explicar, para mí es demasiado difícil. Entonces querido renunciar!
Aquí tirar por un tiempo, mirado en el que se repite anti-código. Decidieron fundar la lógica del programa en dos propiedades. this.CanEnableIme y
this.ImeSupported. La apertura de la ImeSupported parece no ser.
BOOL ImeSupported privada
{
GET
{
return (this.DefaultImeMode = ImeMode.Disable!);
}
}
Luego apunte CanEnableIme. Sorpresa! ............
protegida virtual BOOL CanEnableIme
{
GET
{
retorno this.ImeSupported;
}
}
Ya que es virtual, el intento de anulación. En mi clase personalizada más el código siguiente
BOOL CanEnableIme la protected override
{
GET
{
retorno a la verdad;
}
}
así de simple. Efectiva? No se. Bueno, ahora corriendo! F5! Programar hasta, y rápidamente tratar de abrir el método de entrada, ver si se puede perder en
Wen. Ah! El mundo es tan hermoso! finalmente lo logré. Guangzhou sustituto [eléctrica 13802269370] sustituto Beijing consultar eléctrica 13802269370 sustituto [micro 13802269370] +