Avatar billede j-coder Nybegynder
04. oktober 2005 - 20:59 Der er 3 kommentarer

Bedste løsning til visning af liste af nyheder

Hej,

Jeg er lidt af en WinForms newbie, så jeg føler mig lidt på herrens mark lige nu...

Jeg har en webservice med en metode som returnerer et array af et object som representerer en nyhed fra en database.

Jeg er ca. nået så langt her:

Dim o As New WebServices.NewsService
For Each item As WebServices.ArticleListItem In o.LatestNewsList()
  ' ???
Next

Så lang så godt. Mit problem er at jeg ikke ved ret meget om at arbejde med WinForms UI, i forhold til HTML og CSS.

Hvordan kan jeg præsentere data så en dynamisk og lækker måde, og sådan at jeg kan håndtere events?

Jeg forstiller mig en vertikal liste af nyheder, hvor hver nyhed har en overskrift (ArticleListItem.Title), og en kort tekst (ArticleListItem.Excerpt). Overskriten skal man så kunne klikke på, og dertil skal jeg have et event, hvor jeg kan se hvilken nyhed der er blevet klikket på.

Jeg håber på at nogen har lyst til at hjælpe mig :)

Det er i forbindelse med en aflevering, så der er masser af point ;)
Avatar billede j-coder Nybegynder
04. oktober 2005 - 21:07 #1
Jeg har forsøgt mig med at smide labels ind i et panel, sådan her:

Dim o As New WebServices.NewsService

        Dim intTitleHeight As Integer = 20
        Dim intExcerptHeight As Integer = 50
        Dim intPrevY As Integer = 0

        For Each item As WebServices.ArticleListItem In o.LatestNewsList()
            Dim txtTitle As New Label

            With txtTitle
                .Text = item.Title
                .BackColor = System.Drawing.Color.White
                .Height = 20
                .Width = pnlArticleList.Width
                .Location = New System.Drawing.Point(0, intPrevY)
            End With

            Dim txtExcerpt As New Label

            With txtExcerpt
                .Text = item.Title
                .BackColor = System.Drawing.Color.Red
                .Height = 50
                .Width = pnlArticleList.Width
                .Location = New System.Drawing.Point(0, intPrevY + intTitleHeight)
            End With

            pnlArticleList.Controls.Add(txtTitle)
            pnlArticleList.Controls.Add(txtExcerpt)

            intPrevY = intPrevY + intTitleHeight + intExcerptHeight
        Next

Rent visuelt kommer det til at ligne den opstilling jeg havde forstillet mig, men jeg syntes det virker lidt kluntet. Desuden kan jeg heller ikke se hvordan jeg skal kunne fange et click-event på noget...
Avatar billede awolffdk Nybegynder
06. oktober 2005 - 17:09 #2
Der er click event på labels.

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

End Sub
Avatar billede f_frandsen Nybegynder
02. november 2005 - 10:12 #3
Her er en anden mulighed.. anvend et treeview !!

1. Tilføj et treeview til formen
2. Sæt følgende properties til false (properties til treeview)
  a. ShowLines
  b. ShowPlusMinus
  c. ShowRootLines

og koden:

Dim o As New WebServices.NewsService
For Each item As WebServices.ArticleListItem In o.LatestNewsList()
    Dim nodTitle As New TreeNode
    nodTitle.Text = "Title " & i
    nodTitle.ForeColor = System.Drawing.Color.Black
    'du kan evt bruge nodTitle.Tag til key til den nyhed du vil vise
    Dim nodExcerpt As New TreeNode
    nodExcerpt.Text = "Subject " & i
    nodExcerpt.ForeColor = System.Drawing.Color.Red
    nodTitle.Nodes.Add(nodExcerpt)
    TreeView1.Nodes.Add(nodTitle)
Next
TreeView1.ExpandAll()

Event handler:

Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect

'Udelad if statement hvis man ikke kun skal kunne klikke på overskriften
    If e.Node.Parent Is Nothing Then
        MsgBox(e.Node.Text) ' eller hvad du nu vil når man vælger nyheden
    End If
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester