Hi,
danke für die schnelle Antwort. Leider werde ich daraus auch nicht schlau.
Deshalb zeige ich Euch mein Problem anhand eines Beispiels.
Einfach ne winform mit einem button erstellen.
Dann die class Form1 durch diese hier ersetzen.
Wenn man dann in dem ListView bis Eintrag 50 z.B. vorscrollt und dann den Button drückt,
wird das ListView komplett neu erstellt und die Pos 50 wird wieder angezeigt.
Wenn man aber das ganze mit einer Gruppe (hier Test) versucht dann springt er immer auf Pos 0.
Zum Testen mit einer Gruppe die Komentare lesen.
Wenn mir hier einer sagen kann wie ich in diese Zeile (merker = myListView.TopItem.Index;
) bei eingeschalteter Gruppierung den richtigen Wert bekomme oder wie ich diese Zeile umändern muss, dann ....
wäre ich zu ewigem Dank verpflichtet
Beispiel:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72:
| public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { InitializeListView(); } internal System.Windows.Forms.ListView myListView;
private void InitializeListView() {
myListView = new ListView(); myListView.Location = new System.Drawing.Point(20, 20); myListView.Width = 250;
myListView.View = View.Details;
this.myListView.Columns.Add("Key", 50, HorizontalAlignment.Left); this.myListView.Columns.Add("A", 100, HorizontalAlignment.Left); this.myListView.Columns.Add("B", 100, HorizontalAlignment.Left);
ListViewGroup gruppe = new ListViewGroup(); gruppe.Header = "Test";
for (int i = 0; i < 100; i++) { ListViewItem entryListItem = myListView.Items.Add("Items"); entryListItem.Text = "Items";
entryListItem.UseItemStyleForSubItems = false;
ListViewItem.ListViewSubItem expenseItem = entryListItem.SubItems.Add("Expense");
expenseItem.ForeColor = System.Drawing.Color.Red; expenseItem.Font = new System.Drawing.Font( "Arial", 10, System.Drawing.FontStyle.Italic);
ListViewItem.ListViewSubItem revenueItem = entryListItem.SubItems.Add("Revenue" + i);
revenueItem.ForeColor = System.Drawing.Color.Blue; revenueItem.Font = new System.Drawing.Font( "Times New Roman", 10, System.Drawing.FontStyle.Bold);
}
this.Controls.Add(this.myListView); } int merker = 0; private void button1_Click(System.Object sender, System.EventArgs e) { merker = myListView.TopItem.Index; myListView.Dispose(); InitializeListView(); myListView.TopItem = myListView.Items[merker]; } } |
Moderiert von
Christian S.: C#-Tags hinzugefügt