it-swarm.com.de

Wie kann ich ein Kontrollkästchen deaktivieren?

Ich habe mich gefragt, wie Sie ein Kontrollkästchen in c # nicht auswählen können? Ich dachte, es wäre so etwas wie setSelectable (false) oder etwas, aber ich kann die Methode nicht sehen.

Ich habe canSelect gefunden, aber dies scheint eine schreibgeschützte Eigenschaft zu sein.

Vielen Dank

20
rik

Sie können die Enabled-Eigenschaft auf false setzen. Ie. checkBox1.Enabled = false;

BEARBEITEN: Zu langsam: P

14
anothershrubery

Sie können AutoCheck property auf false setzen.

104
Jacob Seleznev

Sie können einen mit folgendem Code erstellen 

public class ReadOnlyCheckBox : System.Windows.Forms.CheckBox
{
        private bool readOnly;

        protected override void OnClick(EventArgs e)
        {
                // pass the event up only if its not readlonly
                if (!ReadOnly) base.OnClick(e);
        }

        public bool ReadOnly
        {
                get { return readOnly; }
                set { readOnly = value; }
        }
}

sie können auch das markierte Änderungsereignis behandeln und es immer auf den gewünschten Wert zurücksetzen

7
Haris Hasan

So führen Sie ein schreibgeschütztes Verhalten durch:

  • Deaktivieren Sie die Markierung, wenn sich der Cursor über der CheckBox befindet
  • Deaktivieren Sie das Reagieren (logisch oder sichtbar) auf einen Mausklick
  • Haben Tooltips aktiviert

Wir können die CheckBox erben, ähnlich wie Haris Hasans Antwort :

public class ReadOnlyCheckBox : System.Windows.Forms.CheckBox
{
    [System.ComponentModel.Category("Behavior")]
    [System.ComponentModel.DefaultValue(false)]
    public bool ReadOnly { get; set; } = false;

    protected override void OnMouseEnter(EventArgs eventargs)
    {
        // Disable highlight when the cursor is over the CheckBox
        if (!ReadOnly) base.OnMouseEnter(eventargs);
    }

    protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs mevent)
    {
        // Disable reacting (logically or visibly) to a mouse click
        if (!ReadOnly) base.OnMouseDown(mevent);
    }
}
1
Eliahu Aaron

Wie wäre es, wenn Sie die Enabled-Eigenschaft auf false setzen?

1
Richard Everett

AutoCheck existiert nicht in UWP, aber ich denke, Sie können IsTapEnabled = false verwenden. 

0
sjb-sjb

Als Reaktion auf einige Kommentare zum ausgegrauten Etikett: Setzen Sie Text der CheckBox auf den leeren String Enable auf false und verwenden Sie eine Label für den Text. 

Nachteil: Keine mnemonische Unterstützung aus der Box.

0
tm1

Deaktivieren Sie alle Kontrollkästchen in der Checkliste

 for (int i = 0; i < checkedListBoxChecks.Items.Count; i++)
                   {
                       checkedListBoxChecks.SetItemChecked(i, true);
                       //checkedListBoxChecks.Enabled = false;
                       this.checkedListBoxChecks.SetItemCheckState(i, CheckState.Indeterminate);                  
                   }


 private void checkedListBoxChecks_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            if (e.CurrentValue == CheckState.Indeterminate)
            {
                e.NewValue = e.CurrentValue;
            }
        }
0
Thapaswi

Dieser Code hat für mich funktioniert:

public class CtrlCheckBoxReadOnly : System.Windows.Forms.CheckBox
{
    [Category("Appearance")]
    [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
    public bool ReadOnly { get; set; }

    protected override void OnClick(EventArgs e)
    {
        if (!ReadOnly) base.OnClick(e);
    }
}
0
Ángel Ibáñez

Verwenden Sie eine einfache Label mit einer Glyphe wie folgt für ihre Text: ✔ checkBox1.

0
tm1