private static void ConfigReplaced(object sender, ConfigReplacedEventArgs e) { // Pour chaque fenêtre à laquelle est associée la Config sender, enlevons l'ancienne // Config et insérons la nouvelle. // il y a moyen de faire ça avec Linq, mais j'ai la flemme de chercher List <object> foundWins = new List <Object>(); foreach (KeyValuePair <Object, Config> kvp in theConfs) { if (object.ReferenceEquals(kvp.Value, sender)) { foundWins.Add(kvp.Key); } } foreach (Object win in foundWins) { theConfs.Remove(win); theConfs.Add(win, e.newConfig); } // Désinscrivons cette méthode de l'évèenemnt sur l'ancienne Config // et inscrivons-la sur la nouvelle. Config oldConf = (Config)sender; oldConf.ConfigReplacedEvent -= ConfigReplaced; e.newConfig.ConfigReplacedEvent += ConfigReplaced; }
private void SubConfig2Replaced(object sender, ConfigReplacedEventArgs e) { logger.ConditionalDebug("SubConfig2Replaced"); subConfig2.ConfigReplacedEvent -= SubConfig2Replaced; subConfig2 = e.newConfig; subConfig2.IsSubConfig(2); subConfig2.ConfigReplacedEvent += SubConfig2Replaced; }