Vra

Ek moet 'n veranderlike lengte boodskap vertoon en laat die teks te kies wees. Ek het die teksboks ReadOnly wat nie toelaat dat die teks na geredigeer gemaak, maar die insette kappie wat gewys word.

Die flikkerende insette kappie is verwarrend. Hoe kan ek steek dit?

Was dit nuttig?

Oplossing

Jy kan dit doen deur 'n Win32 oproep

[DllImport("user32.dll")]
static extern bool HideCaret(IntPtr hWnd);
public void HideCaret()
{
    HideCaret(someTextBox.Handle);
}

Ander wenke

By die gebruik van die win32 oproep moenie vergeet om die wyser in die teksboks se GotFocus geleentheid om weg te steek.

Net vir volledigheid, ek nodig het so 'n funksie vir die gebruik van 'n DevExpress Winforms TextEdit beheer .

Hulle doen reeds voorsien 'n ShowCaret en 'n HideCaret metode, ongelukkig hulle beskerm word. Daarom het ek het 'n afgeleide klas wat die funksie bied. Hier is die volledige kode:

public class MyTextEdit : TextEdit
{
    private bool _wantHideCaret;

    public void DoHideCaret()
    {
        HideCaret();

        _wantHideCaret = true;
    }

    public void DoShowCaret()
    {
        ShowCaret();

        _wantHideCaret = false;
    }

    protected override void OnGotFocus(EventArgs e)
    {
        base.OnGotFocus(e);

        if (_wantHideCaret)
        {
            HideCaret();
        }
    }
}

Om die kode te gebruik, net gebruik die afgeleide klas in plaas van die oorspronklike TextEdit klas in jou kode en noem DoHideCaret() oral, bv in die konstruktor van jou vorm wat die teks wysig beheer bevat.

Miskien is dit nuttig om iemand in die toekoms.

As jy die teks boks (set Enable=false) skakel, die teks in dit is nog scroll en kies. As jy nie hou van die visuele aanbieding van 'n gestremde tekskassie (grys agtergrond gewoonlik) jy kan met die hand die kleure oorheers.

Wees gewaarsku, die hand oorheersende kleure gaan maak jou vorm / beheer lyk vreemd op stelsels wat nie die standaard kleur / tema instellings gebruik nie. Moenie aanvaar dat omdat jou beheer is wit wat almal se beheer gaan wit te wees. Dit is hoekom jy altyd moet gebruik maak van die stelsel kleure waar moontlik (gedefinieer in die System.Drawing.SystemColors opsomming) soos SystemColors.ControlLight.

AFAIK, hierdie kan nie gedoen word. Die teksboks beheer is 'n snaakse beheer omdat dit eintlik 'n lot van gedrag wat nie te wyte kan verander word om die manier waarop dit krane in die bedryfstelsel. Dit is die rede waarom baie van die koel persoonlike TextBoxes geskryf van nuuts af.

Ek is bevrees jy mag nie in staat wees om te doen wat jy wil doen: (

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top