Чтобы получить доступ к панели инструментов, вам нужна функция FindToolbar, подобная той, которую вы опубликовали в вопросе.Это версия этой функции на C #:
private T FindToolStrip<T>(Control control) where T : System.Windows.Forms.Control
{
if (control == null)
{
return null;
}
else if (control is T)
{
return (T)control;
}
else
{
T result = null;
foreach (Control embedded in control.Controls)
{
if (result == null)
{
result = FindToolStrip<T>(embedded);
}
}
return result;
}
}
После этого вы создаете элемент управления кнопки (или любой другой, который вам нужен) и добавляете в него следующий код:
ToolStrip ts = new ToolStrip();
ts = FindToolStrip<ToolStrip>(this.reportViewer1);
ts.Items[13].PerformClick();
Item 13это предварительный просмотр печати, вы можете получить индексы всех кнопок в ReportViewers ToolStrip, выполнив циклический цикл и выписав имена элементов (всего их 21, но некоторые из них являются разделителями или метками).Вы можете использовать этот код для запуска любого из них (кроме «Экспорта», я думаю, что это связано с тем, что «Экспорт» - это выпадающая кнопка, а не обычная).Если вам интересно, это код, который экспортирует отображаемый отчет в файл .xls:
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
string path = " ";
DialogResult dr= saveFileDialog1.ShowDialog();
path = saveFileDialog1.FileName;
byte[] bytes = reportViewer1.LocalReport.Render("Excel", null, out mimeType, out encoding, out extension, out streamids, out warnings);
FileStream fs = new FileStream(path + ".xls", FileMode.Create);
fs.Write(bytes, 0, bytes.Length);
fs.Close();
Опять же, вы можете поместить его в метод button_Click или что-то подобное.Я не пробовал его с другими расширениями (.pdf или .doc), но я думаю, что он должен работать просто отлично.Вам нужно добавить расширение файла, который вы пытаетесь сохранить, в строку пути, иначе вы не сможете открыть созданный файл.Я надеюсь, что это поможет вам решить вашу проблему.