Tôi đã nghiên cứu Android gần đây và tôi đã cố gắng chuyển một trong các chức năng của nó sang khung công tác nhỏ gọn C#.Cố gắng đóng một biểu mẫu sau biểu mẫu tiếp theo được hiển thị trong C# cf
Điều tôi đã làm là tạo lớp Tóm tắt mà tôi gọi là Hoạt động. Lớp này trông như thế này
internal abstract class Activity
{
protected Form myForm;
private static Activity myCurrentActivity = null;
private static Activity myNextActivity = null;
internal static void LoadNext(Activity nextActivity)
{
myNextActivity = nextActivity;
if (myNextActivity != null)
{
myNextActivity.Show();
if (myCurrentActivity != null)
{
myCurrentActivity.Close();
myCurrentActivity = null;
}
myCurrentActivity = myNextActivity;
myNextActivity = null;
}
}
internal void Show()
{
//PROBLEM IS HERE
Application.Run(myForm);
//myForm.Show();
//myForm.ShowDialog();
//
}
internal void Close()
{
myForm.Close();
}
internal void GenerateForm()
{
///Code that uses the Layout class to create a form, and then stores it in myForm
//then attaches click handlers on all the clickable controls in the form
//it is besides the point in this problem
}
protected abstract void Click(Control control);
//this receives all the click events from all the controls in the form
//it is besides the point in this problem
}
Tôi có vấn đề là với chạy một phần của Show()
lệnh
Về cơ bản tất cả các lớp học của tôi thực hiện các lớp trên, tải một file xml và hiển thị nó. Khi tôi muốn chuyển đổi sang một class mới/mẫu (ví dụ đi từ ACMain để ACLogIn) tôi sử dụng mã này
Activity.LoadNext(new ACLogIn);
nào là nghĩa vụ phải tải các hình thức tiếp theo, hiển thị nó, và dỡ bỏ các hình thức hiện tại
tôi đã thử những giải pháp này (trong phương pháp Show()
) và đây là vấn đề với mỗi một
sử dụng
myForm.ShowDialog()
này hoạt động, nhưng khối thi, điều đó có nghĩa rằng hình thức cũ không đóng, và tôi càng di chuyển giữa các hình thức càng quá trình ngăn xếp tăngsử dụng
myForm.Show()
này hoạt động, đóng cửa dưới dạng cũ sau khi cũ được hiển thị, nhưng ngay sau đó đóng chương trình và kết thúc nósử dụng
Application.Run(myForm)
này chỉ hoạt động trên các hình thức đầu tiên được nạp, khi tôi chuyển sang hình thức tiếp theo, nó cho thấy sau đó nó ném một ngoại lệ nói " Giá trị không nằm trong phạm vi dự kiến "
Ai đó có thể giúp tôi khắc phục sự cố này hoặc tìm giải pháp thay thế không?
Vấn đề chính là bạn chỉ có thể có 1 Biểu mẫu chính. Xem nếu Aplication có thuộc tính MainForm có thể ghi, sau đó sử dụng nó với Show(). –