2009-02-01 10 views
0

Je travaille sur une application qui obtient du contenu à partir de flux en C#. Ce contenu devrait ensuite être affiché sur le formulaire.Contenu dynamique dans les formulaires Windows

Ma question est quel contrôle dois-je utiliser pour conserver ces données? Dois-je créer une nouvelle étiquette (dynamiquement) pour chaque article? Quelqu'un m'a suggéré que je devrais utiliser un RichTextBox mais ce contenu ne devrait pas être éditable.

Si ça aide, je suis un développeur web. Normalement, je produisais mon contenu en HTML et utilisais des en-têtes, des paragraphes, etc. pour mon contenu. Est-ce que je regarde cela de la mauvaise façon?

Si cela semble être une question très basique, c'est probablement le cas. Je suis très nouveau à Windows Forms.

Merci, Ross

Répondre

1

DataGridView est assez bon pour cela. Voir cet exemple. Bien sûr, vous pouvez améliorer look and feel :)

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     List<Item> items = new List<Item>(); 

     items.Add(new Item("item 1")); 
     items.Add(new Item("item 2")); 
     items.Add(new Item("item 3")); 
     items.Add(new Item("item 4")); 


     dataGridView1.DataSource = items; 
    } 
} 
class Item 
{ 
    public string ItemName { get; set; } 
    public Item(string name) 
    { 
     ItemName = name; 
    } 

} 
+0

J'ai essayé votre exemple et cela ressemble à un bon (et simple!) Moyen de le faire. – Ross

1

Si vous êtes à l'aise avec le langage HTML, je dirais aller avec un contrôle WebBrowser. Il est facile à utiliser, vous êtes familier avec HTML, de sorte que vous pouvez avoir un contrôle complet sur ce que vous voulez afficher. Inutile de réinventer la roue.

EDIT: Si vous voulez strictement coller avec Winforms, et que vous pensez qu'un WebBrowser ne le coupera pas, je suggèrerais probablement un DataGridView. Vous pouvez y héberger toutes sortes de contenus ainsi que des images et des liens, et vous pouvez désactiver toutes sortes de retouches. Vous pouvez même vous débarrasser des lignes de la grille, de sorte qu'il n'aura pas le "look" d'une grille.

1

Une zone de liste ou une vue de liste sont également de bonnes alternatives. La meilleure caractéristique est que vous pouvez facilement supprimer le contenu du haut tout en ajoutant du contenu en bas, rendant le défilement très facile à implémenter.

De quel type de contenu s'agit-il? Est-ce stylé (par exemple, a polices, couleurs, liens)

1

Voici pourquoi WPF a été inventé. Il est beaucoup plus flexible de mettre du contenu basé sur le balisage sur vos applications que WinForms. Si vous pouvez utiliser WPF, vérifiez cela (bien que vous deviez suivre une courbe d'apprentissage pour le faire). Dans le cas contraire, vous pouvez créer dynamiquement des contrôles d'étiquette et les placer sur les contrôles du panneau pour contrôler quelque peu la mise en page. Si vous devez utiliser WinForms et que vous devez utiliser les contrôles communs, respectez le contrôle TextBox ou RichTextEditor et désactivez-les.

+0

Si vous avez besoin qu'un seul formulaire pour cela en utilisant WPF, cela peut être contenu dans une application WinForms plus? –

1

J'ai un flux de données WCF provenant d'un service Web. Dans l'application Windows Forms, j'ai créé un contrôle utilisateur pour afficher une unité de données. Pour chaque unité de données provenant du service Web, je crée une instance du contrôle utilisateur. Ils sont ajoutés verticalement à une fenêtre de défilement. Le contrôle de l'utilisateur me permet de styliser l'information selon les besoins, et l'utilisateur peut interagir avec le contenu via des boutons, etc.

Questions connexes