2009-08-18 3 views
1

Я пытался создать визуализатор для IDictionary или ICollectionКак создать визуализатор строк Visual Studio?

Тогда как простой визуализатор (без диалога, я имею в виду ususal строки визуализатора, которая появляется при наведении курсора мыши на переменном, смотрите изображение ниже), я хочу, чтобы мой обычай text, я хочу передать коллекцию в ее список (IE StringCollection to List (Of String) или List), а затем я смогу увидеть его в визуализаторе. Или для словарей показать списки визуализаторов для ключей и значений.

Любые идеи о том, как реализовать или даже начать?

В ближайшее время я обновлю свой вопрос.

Это то, что я думал о:

using System.Collections.Specialized; 
using System.Collections; 

namespace ConsoleApplication2 
{ 
    static class Program 
    { 
     static void Main(string[] args) 
     { 
      System.Collections.Specialized.StringCollection collection = new StringCollection(); 
      collection.AddRange(new string[] { "string1", "string2", "sting3" }); 
      string[] visualizable = collection.ConvertToVisualizableList(); 

      Dictionary<string,string> dic = new Dictionary<string,string> 
      { 
       {"key1","value"}, 
       {"key2","value"} 
      }; 
      string[,]  visualizable2 = dic.ConvertToVisualizableDictionary(); 



     } 

     static string[] ConvertToVisualizableList(this IList collection) 
     { 
      lock (collection) 
      { 
       if (collection == null) return null; 
       int length = collection.Count; 
       string[] list = new string[length]; 

       for (int i = 0; i < length; i++) 
       { 
        object item = collection[i]; 
        if (item != null) list[i] = item.ToString(); 
       } 

       return list.ToArray(); 
      } 
     } 

     static string[,] ConvertToVisualizableDictionary(this IDictionary dictionary) 
     { 
      if (dictionary == null) return null; 
      int length = dictionary.Count; 
      string[,] list = new string[length, 2]; 

      int i = 0; 
      foreach (object item in dictionary.Keys) 
      { 
       list[i, 0] = item.ToString(); 
       object value = dictionary[item]; 
       if(value!=null) list[i, 1] = value.ToString(); 
       i++; 
      } 
      return list; 
     } 
    } 
} 

Это VS визуализаторы для массива и многомерные массивы:

alt text

Я хочу использовать что-то подобное для ICollection (или IList), IDictionary и т. Д.

Обратите внимание, что в массивах визуализатор отображает каждый вложенный объект. Это на самом деле то, что я хочу достичь:

d.

Попробуйте визуализировать список, и вы увидите, что есть личное значение _items, чтобы вы могли видеть его элементы. Я хочу добиться чего-то подобного в коллекции и словаре.

ответ

1

Существует ряд примеров в Code Project. Это тот, который у меня самый большой опыт: DataSet Visualizer

Я сам установил и использовал его, поэтому я знаю, что он работает. Является более продвинутым, чем вам нужно, поскольку на самом деле отображает все наборы данных ADO, но код довольно легко изменить.

Вот несколько других ссылок, чтобы проверить, как хорошо:

Project 1

Project 2

+0

На самом деле я хочу контролировать область, где появляется строка, я хочу, чтобы это стало местом для визуализатора, возможно ли это? – Shimmy

+1

Я знаю, что API-интерфейс визуализатора является широким и мощным, но вам придется загрязнять руки. Было ли какое-либо из этих трех вышеприведенных ссылок совсем рядом с тем, как вы хотите, чтобы ваш визуализатор работал? я бы выбрал один и бежал с ним. Есть десятки статей из основного поиска Google: http://www.google.com/search?rlz=1C1GGLS_en-USUS293US304&sourceid=chrome&ie=UTF-8&q=visual+studio+2005+custom+visualizer И это один из докторов Добба выглядит особенно перспективным: http: //www.ddj.com/windows/184406197 –

+0

Большое спасибо, было очень полезно! Если я создам визуализатор, я отправлю его здесь! – Shimmy

Смежные вопросы