Вероятно, лучшая вещь сделать состояла бы в том, чтобы получить поток к ресурсу RDLC от другого блока, затем передать это методу "LoadReportDefinition" управления Средством просмотра Отчета.
Детали того, как получить поток от встроенного ресурса в различном блоке, могут быть найдены здесь: Ресурсы Получения с Классом
ResourceManager Кроме того, необходимо будет обратиться к встроенному использованию ресурса, это - весь путь пространства имен.
, Например, если у Вас есть приложение с пространством имен по умолчанию TheApp, и Вы сохраняете отчет названным" MyReport.rdlc" в папке названный" Отчеты ", ссылочный вызов отчета был бы be:-
rv.LocalReport.ReportEmbeddedResource = "TheApp.Reports.MyReport.rdlc";
Судя по коду, самое близкое, что вы можете сделать, чтобы скрыть это и, возможно, сделать его вызов напрямую затруднительным - обратите внимание, что даже когда 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; }
Лично я бы не стал беспокоиться. Это не прочно (просто отлейте).
Нет, вы можете удалить их из дизайнера (как показано), но вы не можете скрыть их код формы, так как это нарушит принцип подстановки. Здесь много раз спрашивали и отвечали, см., Например, этот вопрос SO .
Вы можете использовать атрибут [EditorBrowsable]
, как описано здесь .
[EditorBrowsable(EditorBrowsableState.Never)]
public bool HideMeInIntellisense
{
// ...
Из документации:
... IntelliSense Engine в Visual Studio использует этот атрибут, чтобы определить, отображать ли свойство или метод.
Однако пользователи могут переопределить это в настройках VS. В ReSharper также есть параметр, который контролирует, учитывается ли этот атрибут в его IntelliSense.
Из любопытства, почему вы хотите что-то скрыть от пользователей? То, что член скрыт описанным выше способом, не означает, что вы не можете использовать его в коде и успешно скомпилировать. Это просто препятствует обнаружению члена.
Возможно, вы хотите унаследовать от ContainerControl или UserControl, добавить Button к этому элементу управления и просто предоставить те части интерфейса Button, которые вы хотите сохранить.