Compact Framework disabilitare il suggerimento

In questo articolo, vedremo come in ambiente mobile, possiamo disabilitare il suggerimento nelle caselle di testo tramite la tecnolgoa .Net (VB.Net e C#).

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

Tramite le api di Windows Mobile, vedremo come applicare ad una casella di testo, la possibilità di evitare il suggerimento, che compare quando si digita del testo in tale casella.

Inseriamo in una form, due caselle di testo con le relative label, di quest’ultima, in una applichiamo alla proprietà text, il seguente testo “Senza Suggerimento” mentre nell’altra sempre per la proprietà text il valore “Suggerimento”, il tutto come mostrato in figura 1.



Figura 1

Stesura del codice.


Inseriamo lo spazio dei nome, per la gestione delle api, di seguito si riporta il frammento di codice di tale dichiarazione.

VB.Net
Imports System.Runtime.InteropServices
C#
using System.Runtime.InteropServices;

Ora inseriamo la dichiarazione di api, in particolare utilizzeremo le funzioni di api, GetCapture della dll coredll, SHSetInputContenxt della dll aygshell ed infine la funzione SHSetInputContext .

Di seguito si riporta il frammento di codice delle suddette operazioni oltre alla creazione di un enum per   disabilitare il  suggerimento.


VB.Net
'dichiarazione di api
    "coredll")> _
    Private Shared Function GetCapture() As IntPtr
    End Function
    "aygshell")> _
    Private Shared Function SHSetInputContext(ByVal hwnd As IntPtr, ByVal dwFeature As SHIC_FEATURE, ByVal lpValue As String) As Integer
    End Function
    "aygshell")> _
    Private Shared Function SHSetInputContext(ByVal hwnd As IntPtr, ByVal dwFeature As SHIC_FEATURE, ByRef lpValue As Integer) As Integer
    End Function
    _
Enum SHIC_FEATURE
        SHIC_FEATURE_RESTOREDEFAULT = 0
        SHIC_FEATURE_AUTOCORRECT = 1
        SHIC_FEATURE_AUTOSUGGEST = 2
        SHIC_FEATURE_HAVETRAILER = 3
        SHIC_FEATURE_CLASS = 4
    End Enum
C#
//dichiarazione di api
        [DllImport("coredll")]
        extern static IntPtr GetCapture();
        [DllImport("aygshell")]
        extern static int SHSetInputContext(IntPtr hwnd, SHIC_FEATURE dwFeature, string lpValue);
        [DllImport("aygshell")]
        extern static int SHSetInputContext(IntPtr hwnd, SHIC_FEATURE dwFeature, ref int lpValue);
        [Flags]
        enum SHIC_FEATURE
        {
            SHIC_FEATURE_RESTOREDEFAULT = 0,
            SHIC_FEATURE_AUTOCORRECT = 0x00000001,
            SHIC_FEATURE_AUTOSUGGEST = 0x00000002,
            SHIC_FEATURE_HAVETRAILER = 0x00000003,
            SHIC_FEATURE_CLASS = 0x00000004
        }
 

Ora nell’evento load della form, utilizziamo le api, per disabilitare il suggerimento alla prima casella di testo, mentre nella seconda, non impostiamo nulla.

Di seguito si riporta il frammento di codice situato nell’evento load della form, per disabilitare il suggerimento della prima casella di testo.



VB.Net
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        txtnonSuggerimento.Capture = True
        Dim nosuggerimento As IntPtr = GetCapture()
        txtnonSuggerimento.Capture = False
        Dim ret As Integer
        Dim FALSO As Integer = 0
        ret = SHSetInputContext(nosuggerimento, SHIC_FEATURE.SHIC_FEATURE_AUTOSUGGEST, FALSO)
    End Sub
C#
private void Form1_Load(object sender, EventArgs e)
        {
            txtnonSuggerimento.Capture = true;
            IntPtr nosuggerimento = GetCapture();
            txtnonSuggerimento.Capture = false;
            int ret;
            int FALSO = 0;
            ret = SHSetInputContext(nosuggerimento, SHIC_FEATURE.SHIC_FEATURE_AUTOSUGGEST, ref FALSO);
        }



Conclusioni

Ora che abbiamo scritto il nostro codice, non ci resta che testare l’applicativo, avviamolo, e digitiamo, tramite la tastiera virtuale, un testo in cui il sistema ci suggerisce  a video la parola delle prime lettere che stiamo digitando.

Nella prima casella il suggerimento sarà disabilitato, quindi non vedremmo nessuna parola, mentre nella seconda casella verranno visualizzati i suggerimenti.

Tramite la parola download potete scaricare il file utilizzato in questo articolo.

Download