2011-10-19 28 views
6

Câu hỏi đơn giản. Tôi có một MainForm và một settingsForm. Biểu mẫu cài đặt được khởi tạo một lần và sau đó được hiển thị mỗi khi người dùng nhấp vào nút. Tôi cần nó để làm một cái gì đó khi nút này được nhấp.Sự kiện nào được kích hoạt khi ShowDialog (ParentForm) được gọi trong C#

m_inputSettings.ShowDialog(this); //edit settings selected, so show that form 

Đây là biểu mẫu cài đặt MainForm. Nhưng tôi cần SettingsForm để làm một cái gì đó mỗi khi điều này xảy ra. Hiện nay, tôi không thể tìm ra nếu cuộc gọi này thực sự gây ra bất kỳ sự kiện tôi có thể thiết lập xử lý cho. Nó có kích hoạt một sự kiện không? Nếu không, có cách nào khác tôi có thể nói với SettingsForm của tôi để làm điều gì đó mỗi khi cuộc gọi này xảy ra?

Lưu ý: Bất kỳ mã nào trong biểu mẫu chính sau dòng đó sẽ không được thực hiện cho đến khi SettingsForm trả về, nhưng đó là cố ý.

Cảm ơn.

Chỉnh sửa: Một trong những điều tôi muốn biểu mẫu của tôi thực hiện việc chọn điều khiển cụ thể khi điều này xảy ra, nhưng có vẻ như điều đó là không thể cho đến sau khi biểu mẫu tải xong mọi thứ.

+0

Câu hỏi này có liên quan ở đây: http://stackoverflow.com/questions/4860490/managed-version-of-spy-tool –

Trả lời

6

Bạn có thể ghi đè phương thức OnVisibleChanged trong biểu mẫu cài đặt của mình. Hãy chắc chắn để gọi base.OnVisibleChanged mặc dù là không vít lên bất kỳ quan sát tiềm năng của sự kiện (và bất cứ điều gì khác lớp cơ sở có thể làm bên trong phương pháp đó.)

1

Có thể sử dụng sự kiện Hiển thị được thay đổi.

3

FormShown sự kiện - chỉ được nâng lên một lần khi biểu mẫu được hiển thị lần đầu tiên. OnPaint/OnActivate - mỗi khi biểu mẫu được kích hoạt, nhưng những sự kiện này được nâng lên ngay cả khi bạn chuyển đổi với ứng dụng khác, có thể bạn không muốn làm. Nếu bạn thay đổi khả năng hiển thị của biểu mẫu, bạn có thể sử dụng OnVisibleChanged Nếu bạn đang giảm thiểu biểu mẫu, bạn có thể sử dụng sự kiện OnSizeChanged/OnLocationChanged.

Nếu không phù hợp với bạn, hãy tạo thuộc tính công khai và đặt sai khi biểu mẫu được đóng/ẩn và đặt đúng trước khi hiển thị. OnActivate, sử dụng thuộc tính này để thực hiện nhiệm vụ của bạn.

Các vấn đề liên quan