Klasseneigenschaft durch Textbox ändern?

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von BadLuck.

    Klasseneigenschaft durch Textbox ändern?

    Guten Abend,

    ich habe mal wieder ein kleines Problem.

    Normalerweise ist dies mein Code:

    VB.NET-Quellcode

    1. Dim searchParameters = New PlayerSearchParameters() With {.Page = 1, .Level = Level.Silver, .League = League.xxx, .Team = Team.xxx}
    2. Dim searchResponse = Await client.SearchAsync(searchParameters)


    Das funktioniert auch alles, nur gibt es für die einzelnen Dinge wie zB. "Team." massig mögliche Endungen.

    Ich möchte nun was in die Richtung:

    VB.NET-Quellcode

    1. Dim levelx As String = "Level." & ComboBox7.Text
    2. Dim leaguex As String = "League." & ComboBox1.Text
    3. Dim clubx As String = "Team." & ComboBox2.Text
    4. Dim searchParameters = New PlayerSearchParameters() With {.Page = 1 , .Level = levelx, .League = leaguex, .Team = clubx}
    5. Dim searchResponse = Await client.SearchAsync(searchParameters)


    Das klappt natürlich nicht, nun ist die Frage, ist das überhaupt so ähnlich möglich, wie ich mir das vorstelle?
    du gehst davon aus, dass alles aus Strings(Zeichenfolgen) besteht. Aber es gibt noch so viel mehr.
    Vorallem glaub ich nicht, dass "Level." usw. Teil des Contents ist, denn das wäre ja redundant, da du das ganze nachher Eigenschaften zuweist, die genau diese Information enthalten.
    Aber du gibst uns auch etwas wenig Informationen, was du da verwendest.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Das ist die Klasse, auf die zB. zugegriffen wird (als Beispiel die Teams Klasse):

    (das ist eigentlich eine C# Klasse, die ich als Verweis drin habe, habe sie mal schnell durch den Konverter gejagt, in meinem Programm liegt sie aber wie gesagt als funktionierende C# Klasse vor)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class League
    2. Inherits SearchParameterBase(Of UInteger)
    3. Public Const Any As UInteger = 0
    4. Public Const Abundesliga As UInteger = 80
    5. Public Const AirtricityLeague As UInteger = 65
    6. Public Const ALeague As UInteger = 351
    7. Public Const Allsvenskan As UInteger = 56
    8. Public Const BarclaysPremierLeague As UInteger = 13
    9. Public Const Bundesliga As UInteger = 19
    10. Public Const Bundesliga2 As UInteger = 20
    11. Public Const Eredivisie As UInteger = 10
    12. Public Const HellasLiga As UInteger = 63
    13. Public Const KLeague As UInteger = 83
    14. Public Const LigaAdelante As UInteger = 54
    15. Public Const LigaBbva As UInteger = 53
    16. Public Const LigadoBrasil As UInteger = 7
    17. Public Const LigaMx As UInteger = 341
    18. Public Const LigaPortuguesa As UInteger = 308
    19. Public Const Ligue1 As UInteger = 16
    20. Public Const Ligue2 As UInteger = 17
    21. Public Const Mls As UInteger = 39
    22. Public Const NpowerChampionship As UInteger = 14
    23. Public Const NpowerLeague1 As UInteger = 60
    24. Public Const NpowerLeague2 As UInteger = 61
    25. Public Const PolskaLiga As UInteger = 66
    26. Public Const ProLeague As UInteger = 4
    27. Public Const RaiffeisenSl As UInteger = 189
    28. Public Const RussianLeague As UInteger = 67
    29. Public Const SaudiProLeague As UInteger = 350
    30. Public Const SerieA As UInteger = 31
    31. Public Const SerieB As UInteger = 32
    32. Public Const SouthAfricanFl As UInteger = 347
    33. Public Const Spl As UInteger = 50
    34. Public Const Superliga As UInteger = 1
    35. Public Const Tippeligaen As UInteger = 41
    36. Public Const TurkLig As UInteger = 68
    37. Private Sub New(description__1 As String, value__2 As UInteger)
    38. Description = description__1
    39. Value = value__2
    40. End Sub
    41. Public Shared Function GetAll() As IEnumerable(Of League)
    42. yield Return New League("A. Bundesliga", Abundesliga)
    43. yield Return New League("Airtricity League", AirtricityLeague)
    44. yield Return New League("A-League", ALeague)
    45. yield Return New League("Allsvenskan", Allsvenskan)
    46. yield Return New League("Raiffeisen SL", RaiffeisenSl)
    47. yield Return New League("Barclays Premier League", BarclaysPremierLeague)
    48. yield Return New League("Bundesliga", Bundesliga)
    49. yield Return New League("Bundesliga 2", Bundesliga2)
    50. yield Return New League("Eredivisie", Eredivisie)
    51. yield Return New League("Hellas Liga", HellasLiga)
    52. yield Return New League("K-League", KLeague)
    53. yield Return New League("Liga MX", LigaMx)
    54. yield Return New League("Liga Adelante", LigaAdelante)
    55. yield Return New League("Liga BBVA", LigaBbva)
    56. yield Return New League("Liga do Brasil", LigadoBrasil)
    57. yield Return New League("Liga Portuguesa", LigaPortuguesa)
    58. yield Return New League("Ligue 1", Ligue1)
    59. yield Return New League("MLS", Mls)
    60. yield Return New League("Npower Championship", NpowerChampionship)
    61. yield Return New League("Npower League 1", NpowerLeague1)
    62. yield Return New League("Npower League 2", NpowerLeague2)
    63. yield Return New League("Polska Liga", PolskaLiga)
    64. yield Return New League("Pro League", ProLeague)
    65. yield Return New League("Russian League", RussianLeague)
    66. yield Return New League("Saudi Pro League", SaudiProLeague)
    67. yield Return New League("Serie A", SerieA)
    68. yield Return New League("Serie B", SerieB)
    69. yield Return New League("South African FL", SouthAfricanFl)
    70. yield Return New League("Spl", Spl)
    71. yield Return New League("Superliga", Superliga)
    72. yield Return New League("Tippeligaen", Tippeligaen)
    73. yield Return New League("TurkLig", TurkLig)
    74. End Function
    75. End Class



    Hier nochmal der passende Code:

    VB.NET-Quellcode

    1. Dim searchParameters = New PlayerSearchParameters() With {.Page = 1, .Level = Level.Silver, .League = League.SerieB, .Team = Team.xxx}
    2. Dim searchResponse = Await client.SearchAsync(searchParameters)


    Nun möchte ich die Liga aber in einem Dropdown auswählen.
    Bei der Liga ging es ja noch mit If Abfragen, aber es gibt 700 Team und ich habe nicht unbedingt Lust für jedes Team "If Combobox1.text = "XXXX" then...." zu machen.

    Wenn du noch andere Infos brauchst, sag bescheid.

    Gruß
    Das ist aber kein Enum.
    ist sowas ähnliches, aber ist eben doch eine richtige Klasse League, und die statische Methode GetAll() returnt 32 verschiedene Objekte davon.

    Also die könnteman in eine List(Of Legue) packen, und die Combo daran binden, und mit leagueList(Combo.SelectedIndex) immer das richtige Objekt angeben.

    (Aber wennich so Combobox-Namen wie "Combobox7" und "Combobox1" sehe, vergeht mir bisserl die Lust, mich da weiter zu engagieren)
    Ich habe die Lösung, die ComboBoxen hießen übrigens nur im Beispiel so, um zu verdeutlichen das ich ComboBoxen nutze.

    Code (z.B. für Team):

    VB.NET-Quellcode

    1. cmbTeam.DataSource = Team.GetAll().Where(Function(team__1) team__1.Parent = DirectCast(cmbLeague.SelectedItem, League).Value).ToArray()
    2. cmbTeam.DisplayMember = "Description"
    3. cmbTeam.ValueMember = "Value"


    Ein Problem habe ich noch, das ansprechen soll so laufen:

    C# Code:

    Quellcode

    1. .Team = cmbTeam.(uint)(cmbClub.SelectedItem as comboitem).Value


    Allerdings bekomme ich es nicht in VB übersetzt, vielleicht kann mir hier nochmal wer helfen.

    Gruß
    Hier mal ein wenig gekürzt:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. {
    2. public class Team : SearchParameterBase<uint>
    3. {
    4. // ReSharper disable InconsistentNaming
    5. public const uint AaB = 820;
    6. public const uint AalesundsFK = 1755;
    7. public const uint Aberdeen = 77;
    8. public const uint AcademicaCoimbra = 1901;
    9. public const uint ACAjaccio = 614;
    10. public const uint ACArlesAvignon = 111989;
    11. public const uint AccringtonStanley = 110313;
    12. public const uint ACHorsens = 1446;
    13. public const uint ADAlcorcon = 100831;
    14. public const uint AdelaideUnited = 111393;
    15. public const uint AdmiraWackerModling = 111821;
    16. public const uint ADODenHaag = 650;
    17. public const uint AEKAthens = 278;
    18. public const uint AFCWimbledon = 112259;
    19. // ReSharper restore InconsistentNaming
    20. private Team(string description, uint value, uint league)
    21. {
    22. Description = description;
    23. Value = value;
    24. Parent = league;
    25. }
    26. public static IEnumerable<Team> GetAll()
    27. {
    28. yield return new Team("1. FC Kaiserslautern", FCKaiserslautern, League.Bundesliga2);
    29. yield return new Team("1. FC Koln", FCKoln, League.Bundesliga2);
    30. yield return new Team("1. FC Nurnberg", FCNurnberg, League.Bundesliga);
    31. yield return new Team("1. FC Union Berlin", FCUnionBerlin, League.Bundesliga2);
    32. yield return new Team("1. FSV Mainz 05", FSVMainz05, League.Bundesliga);
    33. yield return new Team("1899 Hoffenheim", Hoffenheim, League.Bundesliga);
    34. yield return new Team("A. Vladikavkaz", AVladikavkaz, League.RussianLeague);
    35. yield return new Team("AaB", AaB, League.Superliga);
    36. yield return new Team("Aalesunds FK", AalesundsFK, League.Tippeligaen);
    37. yield return new Team("Aberdeen", Aberdeen, League.Spl);
    38. yield return new Team("AC Ajaccio", ACAjaccio, League.Ligue1);
    39. yield return new Team("AC Arles-Avignon", ACArlesAvignon, League.Ligue2);
    40. yield return new Team("AC Horsens", ACHorsens, League.Superliga);
    41. yield return new Team("Academica Coimbra", AcademicaCoimbra, League.LigaPortuguesa);
    42. yield return new Team("Accrington Stanley", AccringtonStanley, League.NpowerLeague2);
    43. yield return new Team("AD Alcorcon", ADAlcorcon, League.LigaAdelante);
    44. yield return new Team("Adelaide United", AdelaideUnited, League.ALeague);
    45. yield return new Team("Admira Wacker Modling", AdmiraWackerModling, League.Abundesliga);
    46. yield return new Team("ADO Den Haag", ADODenHaag, League.Eredivisie);
    47. yield return new Team("AEK Athens", AEKAthens, League.HellasLiga);
    48. }
    49. }
    50. }

    ja, aber du sagst, du habest

    VB.NET-Quellcode

    1. .Team=directcast(cmbTeam.SelectedItem, Team)
    ausprobiert.
    Was ja garnet sein kann, denn das kompiliert ja garnet.

    .Team ist ja unvollständig.

    kannst du das mal vervollständigen?

    ah - vlt. liegt in

    VB.NET-Quellcode

    1. .Team=directcast(cmbTeam.SelectedItem, Team).Value
    die Lösung, weil Value wäre ja vom Datentyp her eine passende Property.