readonly c # - не найдено подходящего метода для переопределения в настраиваемом текстовом поле winforms - PullRequest
0 голосов
/ 31 октября 2018

Я создал функцию проверки орфографии в текстовом поле winforms. Следуя принятому ниже ответу.

Попытка использовать класс C # SpellCheck

Теперь моя проблема в том, что в некоторых случаях я хочу, чтобы мое текстовое поле было доступно только для чтения. Но, похоже, свойство readonly не работает, когда я пытаюсь выполнить следующее

spellbox.Readonly = true

Я даже пытался добавить следующий метод в класс, но он показывает ошибку как " Не найдено подходящего метода для переопределения "

    [DefaultValue(true)]
     public override bool ReadOnly 
{ get {box.Readonly;} set {box.Readonly = value;} }

Код:

    using System;
    using System.ComponentModel;
    using System.ComponentModel.Design.Serialization;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Forms.Integration;
    using System.Windows.Forms.Design;

    namespace Activity_Tracker_Coding
    {
        [Designer(typeof(ControlDesigner))]
        //[DesignerSerializer("System.Windows.Forms.Design.ControlCodeDomSerializer, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.ComponentModel.Design.Serialization.CodeDomSerializer, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
        class SpellBox : ElementHost
        {
            public SpellBox()
            {
                box = new TextBox();
                base.Child = box;
                box.TextChanged += (s, e) => OnTextChanged(EventArgs.Empty);
                box.SpellCheck.IsEnabled = true;

                box.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
                this.Size = new System.Drawing.Size(100, 20);
            }
            public override string Text
            {
                get { return box.Text; }
                set { box.Text = value; }
            }

            [DefaultValue(false)]
            public bool Multiline
            {
                get { return box.AcceptsReturn; }
                set { box.AcceptsReturn = value; }
            }
            [DefaultValue(false)]
            public bool WordWrap
            {
                get { return box.TextWrapping != TextWrapping.NoWrap; }
                set { box.TextWrapping = value ? TextWrapping.Wrap : TextWrapping.NoWrap; }
            }
            [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
            public new System.Windows.UIElement Child
            {
                get { return base.Child; }
                set { /* Do nothing to solve a problem with the serializer !! */ }
            }
            private TextBox box;

        }
    }

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Я вижу, что вы наследуете от ElementHost объекта, который не содержит свойства ReadOnly.

То, что вы должны сделать, это просто создать свой собственный класс SpellBox без переопределения. Это свойство получит доступ к свойству TextBox только для чтения.

[DefaultValue(true)]
public bool ReadOnly 
{ 
    get 
    {
        return box.Readonly;
    } 
    set 
    {
        box.Readonly = value;
    } 
}
0 голосов
/ 31 октября 2018

Глядя на код в ссылке, он использует элемент управления WPF TextBox. Свойство только для чтения в WPF: IsReadOnly.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...