IWin32Window в качестве параметра для метода, открывающего окно дизайнера
Добавлено: 17 янв 2009, 12:42
Добрый день. Хочу внедрить генератор отчётов в AutoCAD. Требуется, чтобы окно дизайнера открывалось в окне документа этой программы. Т.е. окно документа должно быть родительским. Есть проблема. Окно документа не является классом, наследуемым от Form. Вот код этого класса:
а для того, чтобы сделать окно дизайнера отчетов дочерним, я должен передать ему в качестве объекта, экземпляр класса Form.
Как быть в этой ситуации? Выходит, что я мог бы передать IWin32Window, а не Form, но такого конструктора нет.
Сейчас делаю так:
Но это не удобно. Окно parrentForm по сути лишнее. Плюс получаю неприятный момент:
Подскажите пожалуйста, как такое решить? Или может добавите еще один конструктор?
Код: Выделить всё
namespace Autodesk.AutoCAD.Windows
{
public class Window : DisposableWrapper, IWin32Window
{
public virtual System.Windows.Point DeviceIndependentLocation { get; set; }
public virtual System.Windows.Size DeviceIndependentSize { get; set; }
public virtual IntPtr Handle { get; }
public virtual Icon Icon { get; set; }
public virtual Point Location { get; set; }
public virtual Size Size { get; set; }
public virtual string Text { get; set; }
public virtual bool Visible { get; set; }
public virtual FormWindowState WindowState { get; set; }
public void Close();
protected override void DeleteUnmanagedObject();
public static System.Windows.Vector GetDeviceIndependentScale(IntPtr hWnd);
}
}
Как быть в этой ситуации? Выходит, что я мог бы передать IWin32Window, а не Form, но такого конструктора нет.
Сейчас делаю так:
Код: Выделить всё
Document doc = AcadServices.Application.DocumentManager.MdiActiveDocument;
//окно документа, являющееся экземпляром показанного мною выше класса:
Window window = doc.Window;
//пока что делаю так:
ParrentFormByCompositum parrentForm = new ParrentFormByCompositum();
parrentForm.Text = "AutoCAD. Дизайнер отчётов.";
AcadServices.Application.ShowModelessDialog(parrentForm);
StiReport report = new StiReport();
report.Design(parrentForm);
Подскажите пожалуйста, как такое решить? Или может добавите еще один конструктор?