Сокрытие нежелательных свойств в пользовательских элементах управления

Вероятно, лучшая вещь сделать состояла бы в том, чтобы получить поток к ресурсу RDLC от другого блока, затем передать это методу "LoadReportDefinition" управления Средством просмотра Отчета.

Детали того, как получить поток от встроенного ресурса в различном блоке, могут быть найдены здесь: Ресурсы Получения с Классом

ResourceManager Кроме того, необходимо будет обратиться к встроенному использованию ресурса, это - весь путь пространства имен.

, Например, если у Вас есть приложение с пространством имен по умолчанию TheApp, и Вы сохраняете отчет названным" MyReport.rdlc" в папке названный" Отчеты ", ссылочный вызов отчета был бы be:-

rv.LocalReport.ReportEmbeddedResource = "TheApp.Reports.MyReport.rdlc";

19
задан Joan Venge 6 October 2009 в 22:09
поделиться

4 ответа

Судя по коду, самое близкое, что вы можете сделать, чтобы скрыть это и, возможно, сделать его вызов напрямую затруднительным - обратите внимание, что даже когда hidden он вызывается, и ничего из этого не сработает после преобразования:

// about the closest you can do, but not really an answer
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("just cast me to avoid all this hiding...", true)]
public new ContentAlignment TextAlign { get; set; }

Лично я бы не стал беспокоиться. Это не прочно (просто отлейте).

27
ответ дан 30 November 2019 в 04:03
поделиться

Нет, вы можете удалить их из дизайнера (как показано), но вы не можете скрыть их код формы, так как это нарушит принцип подстановки. Здесь много раз спрашивали и отвечали, см., Например, этот вопрос SO .

1
ответ дан 30 November 2019 в 04:03
поделиться

Вы можете использовать атрибут [EditorBrowsable] , как описано здесь .

[EditorBrowsable(EditorBrowsableState.Never)]
public bool HideMeInIntellisense
{
    // ...

Из документации:

... IntelliSense Engine в Visual Studio использует этот атрибут, чтобы определить, отображать ли свойство или метод.

Однако пользователи могут переопределить это в настройках VS. В ReSharper также есть параметр, который контролирует, учитывается ли этот атрибут в его IntelliSense.

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

2
ответ дан 30 November 2019 в 04:03
поделиться

Возможно, вы хотите унаследовать от ContainerControl или UserControl, добавить Button к этому элементу управления и просто предоставить те части интерфейса Button, которые вы хотите сохранить.

1
ответ дан 30 November 2019 в 04:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: