none
VB2010 - Como llenar un combobox con el listado de paises RRS feed

  • Pregunta

  • Estimados,

    como puedo obtener y luego llenar un combobox con el listado de paises que aparecen en la pestaña ubicación de la configuración regional de Windows?

    sábado, 22 de enero de 2011 23:29

Respuestas

  • He encontrado la solución, por si alguien lo necesita:

    Dim objDic As New Dictionary(Of String, String)()

     

            For Each ObjCultureInfo As System.Globalization.CultureInfo In System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.SpecificCultures)

                Dim objRegionInfo As New System.Globalization.RegionInfo(ObjCultureInfo.Name)

                If Not objDic.ContainsKey(objRegionInfo.DisplayName) Then

                    objDic.Add(objRegionInfo.DisplayName, objRegionInfo.TwoLetterISORegionName.ToLower())

                End If

            Next

     

    Dim obj = objDic.OrderBy(Function(p) p.Key)

     

    For Each val As KeyValuePair(Of String, String) In obj

                cboxPais.Items.Add(val.Key)

           Next

     

    • Marcado como respuesta Marco Elgueta lunes, 24 de enero de 2011 15:13
    lunes, 24 de enero de 2011 15:08

Todas las respuestas

  • hola,

    >Estimados,
    >
    >como puedo obtener y luego llenar un combobox con el listado de paises
    >que aparecen en la pestaña ubicación de la configuración regional de Windows?

    bueno te dejo un link que habla del tema en este mismo foro suerte.

    http://social.msdn.microsoft.com/Forums/es/winformses/thread/64f3f269-f501-4178-a3bb-0dee02cba285

    Enmanuel Grullard@Developer ASP.NET,ASP.NET MVC C#.NET
    domingo, 23 de enero de 2011 0:42
    Moderador
  •  

    (Primero Cambia la Opcion De tu pregunta ,Cambiala a Pregunta ya que no es un debate.)

    Si te refieres a los paises de configuracion regional, puedes obtener esa informacion accediendo al nameSpace Globalization.CultureInfo

    Aqui te concedo un pequeÑo codigo de como obtener dicha informacion, espero te sea de ayuda

     Private Sub GetGloablizationRegional()
    
        For Each GetInfo As System.Globalization.CultureInfo In System.Globalization.CultureInfo.GetCultures(Globalization.CultureTypes.InstalledWin32Cultures)
    
          Me.ComboBox1.Items.Add(GetInfo.DisplayName)
    
          Me.ComboBox1.Sorted = True
    
        Next
      End Sub
    
    
      Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.GetGloablizationRegional()
      End Sub

     

     

    Saludos..


    Mark the better answers for you,do not turn off your mind

    Visit http://www.melvinsofts.com

    domingo, 23 de enero de 2011 0:55
  • Melvin,

    gracias por responder. Creo que las líneas de código apuntan al idioma del sistema operativo y no al listado de paises o ubicación que posee Windows. Esta es la imagen: http://img828.imageshack.us/i/paises.png/

    domingo, 23 de enero de 2011 22:59
  • El espacio de nombres System.Globalization contiene clases que definen información relativa a la referencia cultural, incluido el idioma, el país o región, los calendarios utilizados, los modelos de formato para las fechas, la moneda y los números y el criterio de ordenación de las cadenas. Estas clases son útiles para escribir aplicaciones globalizadas (internacionalizadas).

    CultureInfo (Clase) Proporciona información de una referencia cultural concreta, como los nombres de la referencia cultural, el sistema de escritura, el calendario utilizado y cómo se da formato a las fechas y se ordenan las cadenas.

    Thread.CurrentCulture Obtiene o establece la referencia cultural del subproceso actual.


    Angel R. Jimenez G.
    Software Development
    Santo Domingo
    Republica Dominicana
    domingo, 23 de enero de 2011 23:30
  • Este ejemplo lo escribí en C#. No sabría evaluar exactamente la calidad de la traducción, pero hasta donde entiendo debería estar bien.

    Imports System
    Imports System.Runtime.InteropServices
    Imports System.Text
    Imports System.Windows.Forms
    
    Namespace ...
    	Public Partial Class MainForm
    		Inherits Form
    		<DllImport("Kernel32.dll", SetLastError := True)> _
    		Private Shared Function EnumSystemGeoID(GeoClass As Integer, ParentGeoId As Integer, lpGeoEnumProc As GEO_ENUMPROC) As <MarshalAs(UnmanagedType.Bool)> Boolean
    		End Function
    		<DllImport("Kernel32.dll", SetLastError := True)> _
    		Private Shared Function GetGeoInfo(Location As Integer, GeoType As UInteger, lpGeoData As StringBuilder, cchData As Integer, LangId As Integer) As Integer
    		End Function
    
    		Const GEOCLASS_NATION As Integer = 16
    		Const GEO_FRIENDLYNAME As UInteger = &H8
    		Const GEO_OFFICIALNAME As UInteger = &H9
    
    		Private Delegate Function GEO_ENUMPROC(GeoId As Integer) As Boolean
    
    		Public Sub New()
    			InitializeComponent()
    		End Sub
    
    		Private Sub MainFormLoad(sender As Object, e As EventArgs)
    			EnumSystemGeoID(GEOCLASS_NATION, 0, AddressOf NombrePais)
    		End Sub
    
    		Private Function NombrePais(GeoId As Integer) As Boolean
    			Dim nombre As New StringBuilder(128)
    
    			'If (GetGeoInfo(GeoId, GEO_OFFICIALNAME, nombre, 128, 0) > 0) Then
    			If GetGeoInfo(GeoId, GEO_FRIENDLYNAME, nombre, 128, 0) > 0 Then
    				comboBox1.Items.Add(nombre.ToString())
    			End If
    
    			Return True
    		End Function
    	End Class
    End Namespace
    
    
    lunes, 24 de enero de 2011 1:14
  • Ok, lo voy a probar pero existe alguna alternativa usando el framework 4.0?
    lunes, 24 de enero de 2011 13:45
  • He encontrado la solución, por si alguien lo necesita:

    Dim objDic As New Dictionary(Of String, String)()

     

            For Each ObjCultureInfo As System.Globalization.CultureInfo In System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.SpecificCultures)

                Dim objRegionInfo As New System.Globalization.RegionInfo(ObjCultureInfo.Name)

                If Not objDic.ContainsKey(objRegionInfo.DisplayName) Then

                    objDic.Add(objRegionInfo.DisplayName, objRegionInfo.TwoLetterISORegionName.ToLower())

                End If

            Next

     

    Dim obj = objDic.OrderBy(Function(p) p.Key)

     

    For Each val As KeyValuePair(Of String, String) In obj

                cboxPais.Items.Add(val.Key)

           Next

     

    • Marcado como respuesta Marco Elgueta lunes, 24 de enero de 2011 15:13
    lunes, 24 de enero de 2011 15:08
  • Melvin,

    gracias por responder. Creo que las líneas de código apuntan al idioma del sistema operativo y no al listado de paises o ubicación que posee Windows. Esta es la imagen: http://img828.imageshack.us/i/paises.png/

     

    Que bueno el que hayas encontrado la solucion Perdon por no haber contestado antes...

    Saludos. Y buena Suerte.


    Mark the better answers for you,do not turn off your mind

    Visit http://www.melvinsofts.com

    miércoles, 26 de enero de 2011 5:05
  • Gracias!!!!
    martes, 2 de agosto de 2011 12:40