Tôi đang làm việc trên một tiện ích bổ sung Excel sẽ mở ra biểu mẫu chiến thắng sau khi người dùng nhấp vào nút trên thanh ribbon. Nút này cần phải không có phương thức để người dùng vẫn có thể tương tác với cửa sổ chính, nhưng nó cũng phải luôn ở trên đầu cửa sổ cha mẹ. Để thực hiện điều này tôi đang cố gắng để vượt qua cửa sổ cha là một tham số vào phương thức Show(). Dưới đây là mã của tôi:Làm thế nào để bạn vượt qua cửa sổ chủ sở hữu để Show() quá tải phương pháp?
Ribbon1.cs
private void button2_Click(object sender, RibbonControlEventArgs e)
{
RangeSelectForm newForm = new RangeSelectForm();
newForm.Show(this);
}
Vấn đề với mã này được rằng từ 'này' tài liệu tham khảo lớp băng, không cửa sổ cha mẹ. Tôi cũng đã cố gắng vượt qua trong Globals.ThisAddIn.Application.Windows.Parent. Điều này dẫn đến một lỗi thời gian chạy "Các trận đấu phương pháp quá tải tốt nhất cho 'System.Windows.Forms.Form.Show (System.Windows.Forms.IWin32Window)' có một số đối số không hợp lệ". Cách chính xác để vượt qua cửa sổ chính để hiển thị() là gì?
Trong trường hợp có liên quan, đây là ứng dụng Office 2010 được viết trên .NET 4.0 bằng C#.
EDIT --- dựa trên Slaks trả lời
using Excel = Microsoft.Office.Interop.Excel;
...
class ArbitraryWindow : IWin32Window
{
public ArbitraryWindow(IntPtr handle) { Handle = handle; }
public IntPtr Handle { get; private set; }
}
private void button2_Click(object sender, RibbonControlEventArgs e)
{
RangeSelectForm newForm = new RangeSelectForm();
Excel.Application instance = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
newForm.Show(new ArbitraryWindow(instance.Hwnd));
}
Trên thực tế chính xác hơn, cửa sổ Tôi đang cố gắng để bắn từ dải ruy băng là một Telerik Radform. – hughesdan
Đó là lỗi _compile-time_. – SLaks
Bạn sẽ có thể tải ứng dụng dễ dàng hơn so với các thuộc tính bổ trợ. – SLaks