AdaEniac Ответов: 1

Customcontrol имеет свойство, но оно теряется при сохранении. Например, control. cousor(от cursors-статическое свойство).


Простите за мой английский.
Я написал элемент управления, который имеет свойство Associa(class). И эта ссылка на свойство из статического класса. когда я разработал и сохранил форму, это свойство было потеряно.

Код:

public sealed class Associa
{
    private string _FunCode = "NULL";

    /// <summary>
    /// 构造
    /// </summary>
    private Associa()
    {
    }

    public string FunCode
    {
        get { return this._FunCode; }
        private set
        {
            if (string.IsNullOrEmpty(value))
            {
                value = "NULL";
            }

            if (this._FunCode != value)
            {
                this._FunCode = value;
            }
        }
    }

    public static Associa Generate(string pcFunCode)
    {
        Associa loAssocia = new Associa();
        loAssocia.FunCode = pcFunCode;
        return loAssocia;
    }



public static class AssociaFactory
{
    public static Associa NULL = Associa.Generate("NULL");

    public static Associa pubvocabulary = Associa.Generate("pubvocabulary");
}



используется:
этот код в файле конструктора

this.control.Associa = AssociaFactory.NULL


он потерял на спасении

Что я уже пробовал:

я смотрю код " контроль.Курсор", но понятия не имеет.....

BillWoodruff

Непонятно, что вы здесь делаете. Какова ваша цель ? Когда вы упоминаете "сохранение", логично предположить некоторую форму сериализации ... но ваш код не показывает никаких попыток сериализации или де-сериализации.

Ralf Meier

Я думаю, что ОП хочет, чтобы значение свойства было "сохранено" дизайнером. Но для меня этот "CustomControl" не имеет никакого смысла в этом смысле. Возможно, потребуется больше информации ...

AdaEniac

Да. Я хочу, чтобы значение свойства было "сохранено" дизайнером.

Ralf Meier

ОК... показать (повышение ваш вопрос) кода, где вы используете объединениям в собственность ...

AdaEniac

Ну,я хочу имитировать систему.Окна.Формы.Указатель.
Как вы знаете, " контроль.Курсор " - это от курсоров. Итак, когда вы сохранили форму, вы можете увидеть свойство с именем "Курсор" в файле XXX.Designer.cs.
такой "этот.Курсор = Система.Окна.Формы.Указатели.По умолчанию".

Итак, как я могу сохранить свою собственность, например " курсор"

Ralf Meier

Извините , я не могу вас понять ... :(
Я понял следующее: Вы создали класс и хотите использовать этот класс в качестве свойства с вашим собственным пользовательским элементом управления. Для этого я хочу увидеть код Свойства, где вы пытались это реализовать.
Чего я не понял, так это : для чего вам нужно свойство Cursor-Property в этом контексте ?

Возможно, я совершенно неправильно понял ваше требование. Если да : пожалуйста, объясните еще раз с дополнительной информацией ...

AdaEniac

ОПЫТ

публичный класс TestControl: System.Окна.Формы.Контроль
{
частная Ассоциация _Associa = Associas. NULL;

публичный тестовый контроль()
{
}

общественная ассоциация Ассоциация
{
get { return _Associa; }
set { _Associa = значение; }
}
}

Ralf Meier

см. мое решение (2)

AdaEniac

огорченный。。。

я знаю это, но это не имело никакого эффекта

Ralf Meier

Я изменил свое решение - взгляните ...
Я думаю. что ваша проблема generell заключалась в том, что сеттер FunCode был частным ... (почему ?)

AdaEniac

Большое спасибо!

Ralf Meier

Добро пожаловать...
Спасибо за ваше голосование ... :)

AdaEniac

Я думаю. что ваша проблема generell заключалась в том, что сеттер FunCode был частным ... (почему ?)

Ну, несколько раз назад мы использовали Enum в базовой Dll. но Enum, как вы знаете, не поддается масштабированию. Итак,я хочу смоделировать систему.Окна.Формы.Указатель.

Контроль.Курсор, на который ссылаются курсоры, а курсоры-это статический класс
Таким образом, легко расширить производный класс

Ralf Meier

Извиняюсь... Я тебя не понимаю ...
Пожалуйста, объясните еще раз ...
Вам нужна дополнительная помощь в чем-то ?

AdaEniac

Нет, спасибо

AdaEniac

да

Ralf Meier

Да ?..??
Что вы имеете в виду? ..??

1 Ответов

Рейтинг:
7

Ralf Meier

с вашим классом-свойством попробуйте сделать это так :

[System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Content)]
public Associa Associa
{
	get { return _Associa; }
}
private Associa _Associa = new Associa();


сам ваш класс я изменил вот так :
[System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))]
public class Associa
{

	public string FunCode {
		get { return this._FunCode; }
		set {
			if (string.IsNullOrEmpty(value)) {
				value = "NULL";
			}

			this._FunCode = value;
		}
	}

	private string _FunCode = "NULL";
	public static Associa Generate(string pcFunCode)
	{
		Associa loAssocia = new Associa();
		loAssocia.FunCode = pcFunCode;
		return loAssocia;
	}

	public Associa()
	{
		_FunCode = "NULL";
	}

	public Associa(string pcFunCode)
	{
		_FunCode = pcFunCode;
	}


	public override string toString()
	{
		return _FunCode;
	}

}

теперь он должен работать так, как вы хотите ...