Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Uppdatera ListBox

Postades av 2008-02-05 23:31:23 - Fredrik Karlsson, i forum c# (c-sharp), Tråden har 5 Kommentarer och lästs av 990 personer

Hej.

Har en lagrings klass som innehåller en List.
den har bla. metoderna:

public List getList(){
 return theList;
}

public void addItem(string newString){
 theList.Add(newString);
}


Sen har jag en klass med en form med en ListBox. För att lägga till saker till min ListBox använder jag en knapp som anropar addItem i lagringsklassen. Men hur gör jag för att uppdatera listan sen. Vet att man i java kunde använda
theList.setListData(lagringsklass.getList())


Fått det att funka med följande kod men blir rätt många ställen att ha den på. Borde finnas nåt smidigare sätt.
Lagringsklass rec = (Lagringsklass)recipeBox.SelectedItem;
List<string> descList = rec.getList();
foreach (string s in descList)
{
     descListBox.Items.Add(s);
}


Svara

Sv: Uppdatera ListBox

Postades av 2008-02-06 08:32:49 - Jan Bulér

Titta på DataSource egenskapen.

t ex. theList.DataSource(lagringsklass.getList())


Svara

Sv:Uppdatera ListBox

Postades av 2008-02-07 23:37:14 - Fredrik Karlsson

Testade med

theList.DataSource = lagringsklass.getList();

och för metoden som hanterar knapptryckning för lägg till knappen ändra jag till
lagringsklass.add(element);

Men vad sriver jag för att uppdatera listboxen?


Svara

Sv: Uppdatera ListBox

Postades av 2008-02-08 08:32:09 - Jan Bulér

Du har rätt, naturligtvis ska det vara "theList.DataSource = lagringsklass.getList();" och det kan du ju skriva efter det att du gjort din "lagringsklass.add(element);"


Du kanske skulle skapa ett event i din lagringsklass som fyras av när listan ändras, add(element), delete(element) mm.

Sen kan du ju låta ditt formulär "lyssna" på händelsen och när den inträffar kör du theList.DataSource = lagringsklass.getList().

Ett exempel från MSDN
<code>
namespace TestCollections
{
// A delegate type for hooking up change notifications.
public delegate void ChangedEventHandler(object sender, System.EventArgs e);

// A class that works just like ArrayList, but sends event
// notifications whenever the list changes.
public class ListWithChangedEvent : System.Collections.ArrayList
{
// An event that clients can use to be notified whenever the
// elements of the list change.
public event ChangedEventHandler Changed;

// Invoke the Changed event; called whenever list changes
protected virtual void OnChanged(System.EventArgs e)
{
if (Changed != null)
{
Changed(this, e);
}
}

// Override some of the methods that can change the list;
// invoke event after each
public override int Add(object value)
{
int i = base.Add(value);
OnChanged(System.EventArgs.Empty);
return i;
}

public override void Clear()
{
base.Clear();
OnChanged(System.EventArgs.Empty);
}

public override object this[int index]
{
set
{
base[index] = value;
OnChanged(System.EventArgs.Empty);
}
}
}
}

namespace TestEvents
{
using TestCollections;

class EventListener
{
private ListWithChangedEvent m_list;

public EventListener(ListWithChangedEvent list)
{
m_list = list;

// Add "ListChanged" to the Changed event on m_list:
m_list.Changed += new ChangedEventHandler(ListChanged);
}

// This will be called whenever the list changes.
private void ListChanged(object sender, System.EventArgs e)
{
System.Console.WriteLine("This is called when the event fires.");
}

public void Detach()
{
// Detach the event and delete the list
m_list.Changed -= new ChangedEventHandler(ListChanged);
m_list = null;
}
}

class Test
{
// Test the ListWithChangedEvent class.
static void Main()
{
// Create a new list.
ListWithChangedEvent list = new ListWithChangedEvent();

// Create a class that listens to the list's change event.
EventListener listener = new EventListener(list);

// Add and remove items from the list.
list.Add("item 1");
list.Clear();
listener.Detach();
}
}
}
</code>


Svara

Sv: Uppdatera ListBox

Postades av 2008-02-08 21:31:32 - Fredrik Karlsson

ser inte att som det funkar med att köra

theList.DataSource = lagringsklass.getList();

igen. Inget hände när jag gjorde så.
men testade
theList.DataSource = null;
theList.DataSource = lagringsklass.getList();

och då uppdaterades listan. Känns inte som rätt metod, men funkar...


Svara

Sv:Uppdatera ListBox

Postades av 2008-02-09 14:42:42 - Jan Bulér

Ok om du gör så här i stället, är det OK.

Jag har använt BindingList<String> istället för List<String>.


Lagringsklassen.
<code>
using System;
using System.Text;
using System.ComponentModel;

namespace WindowsApplication2
{
class Lagringsklass
{
BindingList<string> theList;

public Lagringsklass()
{
theList = new BindingList<string>();
}

public BindingList<string> getList()
{
return theList;
}

public void addItem(string newString)
{
theList.Add(newString);
}

public void DeleteItem(string deleteString)
{
theList.Remove(deleteString);
}
}
}
</code>

Window Form
<code>
using System;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication2
{
public partial class Form1 : Form
{
private Lagringsklass lagringsklass;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
lagringsklass = new Lagringsklass();
listBox1.DataSource = lagringsklass.getList();
listBox1.Sorted = true;

//Laddar data utgångsdata för test
lagringsklass.addItem("Item1");
lagringsklass.addItem("Item2");
lagringsklass.addItem("Item3");
}

//Add item
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Length > 0)
{
lagringsklass.addItem(textBox1.Text);
}
}

//Delete Item
private void button2_Click(object sender, EventArgs e)
{
if(listBox1.SelectedIndex >= 0)
lagringsklass.DeleteItem(listBox1.SelectedValue.ToString());
}
}
}
</code>


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 710
27 958
271 751
636
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies