還有tons
的方式可以在之間溝通表單。我想你的情況是你有一些控制來加載和播放某種形式的電影。我想介紹一下這個控制器不需要知道顯示的機制,它只是觸發一些事件來通知I want to display this movie
,顯示形式也不需要在任何類中被保持/引用,它只是需要訂閱事件並在事件觸發時顯示/更改電影。看起來我們在這裏需要一些靜態事件。您可以定義在主UI類此靜態事件,像這樣:
public partial class MainUI : Form {
//...
public class RequireShowMovieEventArgs : EventArgs {
public string MoviePath {get; private set;}
public RequireShowMovieEventArgs(string moviePath){
MoviePath = moviePath;
}
}
public delegate void RequireShowMovieEventHandler(object sender, RequireShowMovieEventArgs e);
public static event RequireShowMovieEventHandler RequireShowMovie;
//...
}
//just fire the event when you want to show/change the movie
RequireShowMovieEventHandler handler = MainUI.RequireShowMovie;
if(handler != null) handler(yourObject, new MainUI.RequireShowMovieEventArgs(@"D:\football scoreboard project\football scoreboard\footballscoreb \quran.swf"));
//Your display form (which you call flashForm)
public class FlashForm : Form {
public FlashForm(){
MainUI.RequireShowMovie += RequiresShowMovieHandler;
Disposed += (s,e) => {
MainUI.RequireShowMovie -= RequiresShowMovieHandler;
};
}
private void RequireShowMovieHandler(object sender, MainUI.RequireShowMovieEventArgs e){
MOVIE = e.MoviePath;
axShockwaveFlash1.Show();
}
//....
}
注意:在我的代碼yourObject
上面是你想要的,甚至null
。但是,您應該考慮傳遞觸發事件的實際控件(例如Button)。
你想的一樣'axShockwaveFlash1'以其他形式顯示或*新的實例*類似於目前其他形式的「axShockwaveFlash1」? – nawfal
我想擁有之前打開的窗體的屬性。 – virtouso
看起來您需要創建用戶控件,您可以在許多表單上重複使用該控件。這是你想要的嗎? –