2009-07-06 3 views
1

Я настоящий манекен в здании пользовательского интерфейса, поэтому мне интересно - какой контроль winforms .NET лучше всего использовать, если вы хотите отображать твиты в режиме списка который обновляется с помощью таких же ящиков, которые содержат текст твита и его метаданные ниже. Есть ли конкретная функция списка winforms для этого типа вещей? Или вы рекомендуете искать/использовать сторонний winforms-контроль? Благодаря! Надеюсь, мой вопрос не был слишком глупым..NET (C#) winforms «tweet» Вопрос управления пользовательским интерфейсом

UPDATE: Я получаю указание от многочисленных ответов, что было бы лучше просто создать простой элемент управления winform, но может ли кто-нибудь указать мне на учебник для этого? Кроме того, если бы я должен был создать такой элемент управления, существует ли удобный встроенный элемент управления для создания списка настраиваемых элементов управления, которые можно прокручивать - возможно, Panel? Заранее спасибо!

ответ

4

Я бы создал пользовательский элемент управления, отображающий информацию для одного твита. Затем я повторю этот элемент управления пользователя в панели.

Вы можете использовать один и тот же макет в своем пользовательском элементе управления, который является стандартным для «твитов».

Левый иллюминатор для отображения изображения пользователя. LinkLabel для имени пользователя. Этикетка для текста твита.


Update: Вот несколько страниц на UserControls

http://msdn.microsoft.com/en-us/library/a6h7e207(VS.71).aspx
http://www.akadia.com/services/dotnet_user_controls.html

Создайте UserControl с помощью конструктора, а также класс Tweet который просто тупой данные чтобы хранить информацию каждого твита. Также создайте свойство Tweet в пользовательском элементе управления, который обрабатывал бы настройку твита и назначение информации стандартным элементам управления, содержащимся в нем (ярлыки, текстовые поля, PictureBox и т. Д.).

В форме, где вы хотите разместить свой пользовательский элемент управления, создайте пустую панель. Где-то в вашем коде вы сделали бы что-то похожее на этот кодовый блок.

 pnlHost.Controls.Clear(); 

     List<Tweet> tweets = new List<Tweet>(); 

     //Populate your collection of tweets here 

     foreach (Tweet tweet in tweets) 
     { 
      TweetControl control = new TweetControl(); 
      control.Tweet = tweet; 

      pnlHost.Controls.Add(control); 
      control.Dock = DockStyle.Top; 

     } 
+0

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

+1

Вместо использования свойства Dock для UserControl я бы использовал FlowLayoutPanel ... –

1

Попробуйте перечислить, он прост в использовании и, по-видимому, подойдет вашим потребностям.

+0

С ListBox вы не имеете никакого контроля над тем, что элементы выглядят как ... если вы не рисовать их вручную с DrawMode = OwnerDrawVariable, который может быть ЛАВАШ –

2

Привет, я бы пошел на сторонний контроль сетки от таких компаний, как Infragistics, DevExpress или Telerik. Другим вариантом было бы создание пользовательского элемента управления, способного отображать одно сообщение и помещать этот элемент управления в элемент управления ретранслятора vb.net (который поставляется с powerpack vb.net). Однако я не уверен, насколько хорошо работает последнее решение, поскольку я только что прочитал об этом, но никогда не пробовал.

+0

DevExpress DataGrid довольно быстро и настраиваемым. – jmservera

2

Попробуйте использовать DataGridView (и DataTable за ним) и перезапишите событие CellPainting, чтобы нарисовать твиты так, как вам нравится.

Редактировать Я думаю, что использование пользовательского элемента управления немного тяжело, чтобы отображать твиты. В основном это зависит от желаемой функциональности отображаемых твитов - что бы вы хотели с ними делать. Например, если вы просто хотите, чтобы пользователь щелкнул твит, а затем перенаправил его на какую-то веб-страницу в браузере, тогда DataGridView будет прекрасно работать, так как вы можете присоединить это действие к событию CellClick. Кроме того, у вас уже есть функции сортировки/поиска DataTable (и связанные с ним DefaultView). Черт, вы можете даже прикрепить ContextMenuStrip к твиту и иметь неограниченные варианты с RightClick.

С другой стороны, если вам нужна какая-либо функциональность, недоступная в DataGridView (например, вы хотели бы добавить 5 различных кнопок в нижней части твита и 3 флажка справа), тогда пользовательский элемент управления сделает вас лучше, потому что вы могли бы построить практически все, что хотели. В этом случае OG объясняет это красиво.

+0

Попробуй. Огромное спасибо! –

+0

Вот ссылка на статью MSDN о событии и примерный код примера: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellpainting.aspx –