Вы можете установить d как глобальный и ссылочный d ["button1"]
global d
...
d["button1"] =
Прием должен использовать Кроме с пересечением двух списков.
Это должно дать Вам список непересекающихся элементов:
var nonIntersecting = a.Union(b).Except(a.Intersect(b));
Проверенный на практике:
List<int> a = new List<int>(){1, 2, 3};
List<int> b = new List<int>(){2, 4, 5};
List<int> c = a.Except(b).Union(b.Except(a)).ToList();
Иначе:
List<int> a = new List<int> { 1, 2, 3 };
List<int> b = new List<int> { 2, 4, 5 };
var nonIntersecting = a.Union(b)
.Where(x => !a.Contains(x) || !b.Contains(x));