none
Ahora tengo este error picturebox RRS feed

Respuestas

  • La llamada es así:

    Pict_Confi_Cervecero.Image = TomarImagenDeArchivo("Configuracion\" & TextBox1.Text & "\Imagen.jpg")
                           

    Y la función es así:

    Public Function TomarImagenDeArchivo(ruta As String) As Image
        Using fs
    As New FileStream(ruta, FileMode.Open, FileAccess.Read)
           
    Dim img As Image = Image.FromStream(fs)
           
    Return img
       
    End using
    End Function

    Había un error trivial en la que yo te puse, que usaba "path" en lugar de "ruta".

    • Marcado como respuesta JETET martes, 25 de julio de 2017 11:30
    lunes, 24 de julio de 2017 20:29

Todas las respuestas

  • Esto te puede ayudar

    https://social.msdn.microsoft.com/Forums/es-ES/bc3eb667-1d50-4f6e-a190-d06375706407/cargar-una-imagen-en-picturebox-sin-bloquearla?forum=vcses

    Edito: Amplío, no se como cargas la imagen tú, pero supongo que ira a una base de datos, yo utilizo MemoryStream para pasarla por byt ej:

      DTabla.Rows.Add()
           Dim Ima As New MemoryStream
            Dim W As Integer = DTabla.Rows.Count - 1
              PictureBox1.Image.Save(Ima, System.Drawing.Imaging.ImageFormat.Jpeg)
               Dim BYT As Byte() = Ima.GetBuffer
           If BYT.Length <> 0 Then
             DTabla.Rows.Item(W).Item("Imagen") = BYT
           End If
    Espero te ayude


    • Editado Marcelo PF lunes, 24 de julio de 2017 12:45
    lunes, 24 de julio de 2017 12:25
  • Lo 1º Gracias por responder

    y lo 2º cargo la imagen al picturebox asi

    Pict_Confi_Cervecero.Image = Image.FromFile("Configuracion\" & TextBox1.Text & "\Imagen.jpg")

    lunes, 24 de julio de 2017 13:53
  • Me he dado cuenta que el erro es porque estoy usando el archivo

    por que si lo guardoen otro nombe no me da el error

    lunes, 24 de julio de 2017 14:17
  • Es problema del Image.FromFile que usas para cargar el archivo (si recuerdo bien de otra pregunta que hiciste antes). El problema es que Image.FromFile deja bloqueado el archivo. El remedio es usar algun otro metodo distinto para cargar la imagen. Por ejemplo, se puede usar Image.FromStream, y asegurarse de luego cerrar el Stream para que el archivo no quede bloqueado:

    Public Function TomarImagenDeArchivo(ruta As String) As Image
        Using fs As New FileStream(path, FileMode.Open, FileAccess.Read)
            Dim img As Image = Image.FromStream(fs)
            Return img
        End using
    End Function

    • Propuesto como respuesta Willams Morales lunes, 24 de julio de 2017 14:51
    lunes, 24 de julio de 2017 14:48
  • Gracias por responder Alberto

    Pero tengo un problema no se como llamar a la funcion TomarImagenDeArchivo 

    Yo siempre que he llamado a un sub es con call pero para TomarImagenDeArchivo no me funciona

    Gracias

    lunes, 24 de julio de 2017 16:09
  • No es un Sub, es un Function. Se llama igual que llamarías a una función nativa, por ejemplo, igual que llamarías a resultado=Math.Log(numero), donde Math.Log es una de las funciones que vienen con las librerías de .NET, pues de la misma forma llamarías a tu función escribiéndola con un "igual" detrás del sitio en el que quieras almacenar el resultado:

    MiPictureBox.Image = TomarImagenDeArchivo(rutaDelArchivo)

    lunes, 24 de julio de 2017 17:29
  • este es el codigo algo modificado pero sigue dando error

    Public Function TomarImagenDeArchivo(ruta As String) As Image
            Using fs As New FileStream("Configuracion\" & TextBox1.Text & "\Imagen.jpg", FileMode.Open, FileAccess.Read)
                Dim img As Image = Image.FromStream(fs)
                Return img
            End Using
        End Function
    
        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
            
                            Pict_Confi_Cervecero.Image = TomarImagenDeArchivo("Configuracion\" & TextBox1.Text & "\Imagen.jpg")
                            
    
    
    
                           
        End Sub

    lunes, 24 de julio de 2017 18:35
  • Cuando dices que sigue dando error, ¿a qué te refieres? ¿Un error de compilación (cuál y en qué línea)? ¿Un error en tiempo de ejecución (cuál y en qué línea)?

    Por cierto, observo en tu código algo completamente absurdo (aunque no es motivo para que dé un error): Le pasas a la función como argumento la ruta del fichero, pero luego en lugar de usar ese argumento en la función, resulta que vueles a repetir el mismo valor que ya le pasaste ???

    Si el error que te da es el de que el fichero está bloqueado, revisa el resto del programa a ver si lo estás bloqueando en otro sitio. Creo recordar que asignabas el archivo al Image en un sitio donde abrías el XML. Obviamente, ese código también tiene que cambiarse por el que usa un Stream, en lugar del Image.FromFile; de lo contrario, en ese punto te dejaría ya el archivo bloqueado.

    lunes, 24 de julio de 2017 20:00
  • Efectiva mente el error que me da es el que el archivo esta bloqueado

    y en el path 

    no se si tengo que cambiar  path y poner  la ruta? 

    "Configuracion\" & TextBox1.Text & "\Imagen.jpg"

    y despues no me deja escribir 

    Pict_Confi_Cervecero.Image = TomarImagenDeArchivo(img)


    • Editado JETET lunes, 24 de julio de 2017 20:13
    lunes, 24 de julio de 2017 20:13
  • La llamada es así:

    Pict_Confi_Cervecero.Image = TomarImagenDeArchivo("Configuracion\" & TextBox1.Text & "\Imagen.jpg")
                           

    Y la función es así:

    Public Function TomarImagenDeArchivo(ruta As String) As Image
        Using fs
    As New FileStream(ruta, FileMode.Open, FileAccess.Read)
           
    Dim img As Image = Image.FromStream(fs)
           
    Return img
       
    End using
    End Function

    Había un error trivial en la que yo te puse, que usaba "path" en lugar de "ruta".

    • Marcado como respuesta JETET martes, 25 de julio de 2017 11:30
    lunes, 24 de julio de 2017 20:29
  • Este es el error que me sigue dando he estado mirando y el archivo no se abre desde ningun otro lado

    lunes, 24 de julio de 2017 21:03
  • Este es todo el codigo

    Imports System.Xml
    Imports Microsoft.VisualBasic.Devices
    Imports System
    Imports System.IO
    Imports System.Drawing.Imaging
    
    
    Public Class Maestro_Cervecero
        'DECLARION DE CLASES DEL XML MAESTROS CERVECEROS
        Public XmlDocument_Cerveceros As XmlDocument
        Public XmlNodeList_Cerveceros As XmlNodeList
        Public Xmlnode_Cerveceros As XmlNode
        'DECLARION DE CLASES DEL XML MAESTROS CERVECEROS
        'DECLARION DE CLASES DEL XML DE EQUIPOS
        Public XmlDocument_Equipos As XmlDocument
        Public XmlNodeList_Equipos As XmlNodeList
        Public Xmlnode_Equipos As XmlNode
        'DECLARION DE CLASES DEL XML DE EQUIPOS
    
        Dim Cadena As String
    
    
        Private Sub Maestro_Cervecero_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            'Habilitamos el arrastre para el control PictureBox2 (No lo tiene permitido en tiempo de diseño)
            Pict_Confi_Cervecero.AllowDrop = True
    
            'Habilitamos el arrastre para el control PictureBox2 (No lo tiene permitido en tiempo de diseño)
            Call Carga_Maestros_Cerveceros()
            Call Carga_Equipos()
            Pict_Confi_Cervecero.Image = ImageList1.Images(0)
            Pict_Confi_Cervecero.Tag = ImageList1.Images.Keys(0) 'Sabe el nombre de la imagen de picturebox y imagelist
    
    
            Label3.Text = Pict_Confi_Cervecero.Tag  'Pict_Confi_Cervecero.Tag(ImageList1.Images.Item(Name))
            Dim Litros As Double
            For Litros = 0 To 5000
    
            Next
    
        End Sub
        Sub Carga_Equipos()
            ComboBox2.Items.Clear()
            If System.IO.File.Exists("Configuracion\Equipos.xml") Then
                XmlDocument_Equipos = New XmlDocument
                XmlDocument_Equipos.Load("Configuracion/Equipos.xml")
                'AÑADE NOMBRE MAESTROS CERVECEROS AL COMBOBOX1
                XmlNodeList_Equipos = XmlDocument_Equipos.SelectNodes("Equipos/Equipo")
                For Each node In XmlNodeList_Equipos
                    ComboBox2.Items.Add(node.ChildNodes(0).InnerText & " " & node.ChildNodes(1).InnerText & " Litros")
    
    
    
                Next
                'AÑADE NOMBRE MAESTROS CERVECEROS AL COMBOBOX1
            Else
                Call Crea_Archivo_Equipos_xml() ' CREA EL ARCHIVO DE  Equipos.XML y COMPARA SI ESISTE
            End If
    
        End Sub
        Sub Carga_Maestros_Cerveceros()
            ComboBox1.Items.Clear()
            '' ''ComboBox2.Items.Clear()
            If System.IO.File.Exists("Configuracion\Cerveceros.xml") Then
                XmlDocument_Cerveceros = New XmlDocument
                XmlDocument_Cerveceros.Load("Configuracion/Cerveceros.xml")
                'AÑADE NOMBRE MAESTROS CERVECEROS AL COMBOBOX1
                XmlNodeList_Cerveceros = XmlDocument_Cerveceros.SelectNodes("Cerveceros/Maestro_Cervecero")
                For Each node In XmlNodeList_Cerveceros
                    ComboBox1.Items.Add(node.ChildNodes(0).InnerText)
                    If node.ChildNodes(2).InnerText = "" Then
                    Else
                        '' ''ComboBox2.Items.Add(node.ChildNodes(2).InnerText)
                    End If
    
    
    
                Next
                'AÑADE NOMBRE MAESTROS CERVECEROS AL COMBOBOX1
            Else
                Call Crea_Archivo_Cerveceros_xml() ' CREA EL ARCHIVO DE  Cerveceros.XML y COMPARA SI ESISTE
            End If
        End Sub
        Sub Seleccion_de_Equipos()
            'SACA LA COLECCION DE NODOS DEL NODO HIJO DEL XML
            XmlNodeList_Cerveceros = XmlDocument_Cerveceros.SelectNodes("Cerveceros/Maestro_Cervecero")
    
            Dim child As XmlNode = XmlDocument_Cerveceros.SelectSingleNode("Cerveceros")
    
            Dim primerHijo As XmlNode = child.ChildNodes.Item(ComboBox1.SelectedIndex)
    
            If primerHijo.HasChildNodes Then
                Dim i As Integer
                ComboBox2.Items.Clear()
                For i = 0 To primerHijo.ChildNodes.Count - 1
    
                    If primerHijo.ChildNodes(i).Name = "Nombre_Equipo" Then
                        If primerHijo.ChildNodes(i).InnerText = "" Then
                            MsgBox("El Cervecero Seleccionado no tiene Equipos")
                            Call Carga_Equipos()
                        Else
                            ComboBox2.Items.Add(primerHijo.ChildNodes(i).InnerText & " - " & primerHijo.ChildNodes(i + 1).InnerText)
                        End If
    
                    End If
    
    
    
                Next i
            End If
            'SACA LA COLECCION DE NODOS DEL NODO HIJO DEL XML
            XmlDocument_Cerveceros.Save("Configuracion/Cerveceros.xml")
        End Sub
        Private Sub Pict_Confi_Cervecero_DragDrop(sender As Object, e As DragEventArgs) Handles Pict_Confi_Cervecero.DragDrop
            If e.Data.GetDataPresent(DataFormats.FileDrop) Then
                Dim strRutaArchivoImagen As String
    
                'Asignamos la primera posición del array de ruta de archivos a la variable de tipo string
                'declarada anteriormente ya que en este caso sólo mostraremos una imagen en el control.
                strRutaArchivoImagen = e.Data.GetData(DataFormats.FileDrop)(0)
    
                'La cargamos al control
    
                Pict_Confi_Cervecero.Load(strRutaArchivoImagen)
                Pict_Confi_Cervecero.Tag = strRutaArchivoImagen
                '' ''ButtonX1.Visible = True
                Label3.Text = strRutaArchivoImagen
    
    
            End If
        End Sub
        Private Sub Pict_Confi_Cervecero_DragEnter(sender As Object, e As DragEventArgs) Handles Pict_Confi_Cervecero.DragEnter
            'DataFormats.FileDrop nos devuelve el array de rutas de archivos
    
            If e.Data.GetDataPresent(DataFormats.FileDrop) Then
    
                'Los archivos son externos a nuestra aplicación por lo que de indicaremos All ya que dará lo mismo.
    
                e.Effect = DragDropEffects.All
    
            End If
        End Sub
        Sub Crea_Archivo_Equipos_xml()
            ' CREA EL ARCHIVO DE  Cerveceros.XML y COMPARA SI ESISTE
            If System.IO.File.Exists("Configuracion\Equipos.xml") Then
    
            Else
                Dim obj As Object
                Dim Archivo As Object
                Dim x As Integer = 0
                obj = CreateObject("Scripting.FileSystemObject")
                Archivo = obj.CreateTextFile("Configuracion\Equipos.xml", True)
                Archivo.Writeline("<?xml version='1.0' encoding='WINDOWS-1252'?>")
                Archivo.writeline("<Equipos>")
                Archivo.writeline("</Equipos>")
                Archivo.close()
            End If
            ' CREA EL ARCHIVO DE  Cerveceros.XML y COMPARA SI ESISTE
        End Sub
        Sub Crea_Archivo_Cerveceros_xml()
            ' CREA EL ARCHIVO DE  Cerveceros.XML y COMPARA SI ESISTE
            If System.IO.File.Exists("Configuracion\Cerveceros.xml") Then
    
            Else
                Dim obj As Object
                Dim Archivo As Object
                Dim x As Integer = 0
                obj = CreateObject("Scripting.FileSystemObject")
                Archivo = obj.CreateTextFile("Configuracion\Cerveceros.xml", True)
                Archivo.Writeline("<?xml version='1.0' encoding='WINDOWS-1252'?>")
                Archivo.writeline("<Cerveceros>")
                Archivo.writeline("</Cerveceros>")
                Archivo.close()
            End If
            ' CREA EL ARCHIVO DE  Cerveceros.XML y COMPARA SI ESISTE
        End Sub
        Sub Guarda_nombre_cervecero()
            'GUARDA NOMBRE DEL MAESTRO CEVECERO
            XmlDocument_Cerveceros = New XmlDocument
            XmlDocument_Cerveceros.Load("Configuracion/Cerveceros.xml")
            Dim nodeRoot As XmlElement = XmlDocument_Cerveceros.DocumentElement
            Dim Cervecero As XmlNode = XmlDocument_Cerveceros.CreateNode(XmlNodeType.Element, "Maestro_Cervecero", "")
            Dim nombre As XmlNode = XmlDocument_Cerveceros.CreateNode(XmlNodeType.Element, "Nombre", "")
            Dim Imagenid As XmlNode = XmlDocument_Cerveceros.CreateNode(XmlNodeType.Element, "Imagenid", "")
            Dim Nombre_Equipo As XmlNode = XmlDocument_Cerveceros.CreateNode(XmlNodeType.Element, "Nombre_Equipo", "")
            Dim Litros_Equipo As XmlNode = XmlDocument_Cerveceros.CreateNode(XmlNodeType.Element, "Litros_Equipo", "")
            If Pict_Confi_Cervecero.Tag <> ImageList1.Images.Keys(0) Then
                Imagenid.InnerText = 1
            Else
                Imagenid.InnerText = 0
            End If
    
            nombre.InnerText = TextBox1.Text
            Nombre_Equipo.InnerXml = TextBox2.Text '& " " & TextBox3.Text & " Litros"
            Litros_Equipo.InnerXml = TextBox3.Text
            Cervecero.AppendChild(nombre)
            Cervecero.AppendChild(Imagenid)
            Cervecero.AppendChild(Nombre_Equipo)
            Cervecero.AppendChild(Litros_Equipo)
            nodeRoot.AppendChild(Cervecero)
            XmlDocument_Cerveceros.Save("Configuracion/Cerveceros.xml")
            MessageBox.Show("El nombre del cervecero se ha guardado correctamente.")
            'GUARDA NOMBRE DEL MAESTRO CEVECERO
        End Sub
        Sub Guarda_nombre_Equipos()
            'GUARDA NOMBRE DEL MAESTRO CEVECERO
            XmlDocument_Equipos = New XmlDocument
            XmlDocument_Equipos.Load("Configuracion/Equipos.xml")
            Dim nodeRoot As XmlElement = XmlDocument_Equipos.DocumentElement
            Dim Equipo As XmlNode = XmlDocument_Equipos.CreateNode(XmlNodeType.Element, "Equipo", "")
            Dim nombre As XmlNode = XmlDocument_Equipos.CreateNode(XmlNodeType.Element, "Nombre", "")
            Dim Litros_Equipo As XmlNode = XmlDocument_Equipos.CreateNode(XmlNodeType.Element, "Litros_Equipo", "")
            If ComboBox2.FindStringExact(TextBox2.Text) > -1 Or TextBox2.Text = "" Then
                MsgBox("Equipo ya existe, o no a escrito el nombre")
            Else
                nombre.InnerText = Replace(TextBox2.Text, Cadena, "")
                Litros_Equipo.InnerXml = TextBox3.Text
                Equipo.AppendChild(nombre)
                Equipo.AppendChild(Litros_Equipo)
                nodeRoot.AppendChild(Equipo)
                XmlDocument_Equipos.Save("Configuracion/Equipos.xml")
                MessageBox.Show("El nombre del Equipo se ha guardado correctamente.")
            End If
            Call Carga_Equipos()
    
            'GUARDA NOMBRE DEL MAESTRO CEVECERO
        End Sub
       Public Function TomarImagenDeArchivo(ruta As String) As Image
            Using fs As New FileStream(ruta, FileMode.Open, FileAccess.Read)
                Dim img As Image = Image.FromStream(fs)
                Return img
            End Using
        End Function
        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
            TextBox1.Text = ComboBox1.SelectedItem
            If System.IO.File.Exists("Configuracion\Cerveceros.xml") Then
    
                For Each node In XmlNodeList_Cerveceros
                    If node.ChildNodes(0).InnerText = ComboBox1.SelectedItem Then
                        If node.ChildNodes(1).InnerText = 1 Then
                            '
                            Pict_Confi_Cervecero.Image = TomarImagenDeArchivo("Configuracion\" & TextBox1.Text & "\Imagen.jpg")
    
    
    
    
                            Label3.Text = Pict_Confi_Cervecero.Image.Tag
                        Else
                            Pict_Confi_Cervecero.Image = ImageList1.Images(0)
                        End If
    
                        If node.ChildNodes(2).InnerText = "" Then
                            TextBox2.Clear()
                        Else
                            TextBox2.Text = node.ChildNodes(2).InnerText
                        End If
                        If node.ChildNodes(3).InnerText <> "" Then
                            TextBox3.Text = node.ChildNodes(3).InnerText
                        End If
                        Cadena = " " & TextBox3.Text & " Litros"
                        'Label3.Text = Pict_Confi_Cervecero.Tag
                        'MsgBox(Pict_Confi_Cervecero.Image.Tag & " / " & ImageList1.Images.Keys(0))
                    Else
                    End If
                Next
                'AÑADE NOMBRE MAESTROS CERVECEROS AL COMBOBOX1
                Call Seleccion_de_Equipos()
            Else
                Call Crea_Archivo_Cerveceros_xml() ' CREA EL ARCHIVO DE  Cerveceros.XML y COMPARA SI ESISTE
            End If
        End Sub
    
    
        'Controla la imagen del cervecero
        Private Sub Pict_Confi_Cervecero_MouseEnter(sender As Object, e As EventArgs) Handles Pict_Confi_Cervecero.MouseEnter
            If Pict_Confi_Cervecero.Tag <> "drag-drop3.jpg" Then '<> ImageList1.Images.Keys(0) Then
                ToolTip1.Active = True
            Else
                ToolTip1.Active = False
            End If
    
        End Sub
    
        'Controla la imagen del cervecero
    
    
        Private Sub Slider1_ValueChanged(sender As Object, e As EventArgs) Handles Slider1.ValueChanged
            TextBox2.Text = Replace(TextBox2.Text, Cadena, "")
    
    
            Dim nombre_equipo As String = TextBox2.Text
            TextBox3.Text = Slider1.Value
            Cadena = " " & TextBox3.Text & " Litros"
            TextBox2.Text = TextBox2.Text & Cadena
            '' ''If nombre_equipo.Contains(Cadena) Then
    
            '' ''Else
            '' ''    TextBox2.Text = TextBox2.Text & Cadena
            '' ''    If TextBox2.Text = Cadena Then
            '' ''        TextBox2.Clear()
            '' ''    Else
            '' ''    End If
            '' ''End If
    
        End Sub
    
        Private Sub TextBox3_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox3.KeyPress
            e.Handled = Not IsNumeric(e.KeyChar) And Not Char.IsControl(e.KeyChar)
        End Sub
        Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
    
            Slider1.Value = TextBox3.Text
        End Sub
        Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
            TextBox2.Text = ComboBox2.SelectedItem
            If System.IO.File.Exists("Configuracion\Equipos.xml") Then
                XmlNodeList_Equipos = XmlDocument_Equipos.SelectNodes("Equipos/Equipo")
    
    
                'AÑADE NOMBRE MAESTROS CERVECEROS AL COMBOBOX1
                For xx = 0 To XmlNodeList_Equipos.Count
                    ' '' ''    ' ''MsgBox(XmlNodeList_Equipos.Count & " / " & ComboBox2.Items.Count)
                    ' '' ''    For xx = 0 To XmlNodeList_Equipos.Count
                    If xx = ComboBox2.SelectedIndex Then
                        ' '' ''            'XmlNodeList_Equipos.Item(xx).ParentNode.RemoveAll ()
                        TextBox2.Text = XmlNodeList_Equipos.Item(xx).ChildNodes(0).InnerText
                        TextBox3.Text = XmlNodeList_Equipos.Item(xx).ChildNodes(1).InnerText
                        ' '' ''            'TextBox2.Text = node.ChildNodes(0).InnerText
                        ' '' ''            'TextBox3.Text = node.ChildNodes(1).InnerText
                        ' '' ''            '' ''If node.ChildNodes(0).InnerText = "" Then
                        ' '' ''            '' ''    TextBox2.Clear()
                        ' '' ''            '' ''Else
    
                        ' '' ''            '' ''End If
                        If XmlNodeList_Equipos.Item(xx).ChildNodes(1).InnerText = "" Then
                            Slider1.Value = 20
                        Else
                            Slider1.Value = XmlNodeList_Equipos.Item(xx).ChildNodes(1).InnerText
                        End If
                        Cadena = " " & TextBox3.Text & " Litros"
                        ' '' ''            MsgBox(xx & " / " & ComboBox2.SelectedItem)
                        ' '' ''            Exit For
                    End If
    
    
                Next
                ' ''If ComboBox2.SelectedItem.ToString.Contains(node.ChildNodes(0).InnerText) Then
                ' ''    MsgBox(node.ChildNodes(0).InnerText = ComboBox2.SelectedItem)
                'XmlDocument_Equipos.Save("Configuracion/Equipos.xml")
    
                ' ''Else
                ' ''End If
    
                'Next
                'AÑADE NOMBRE MAESTROS CERVECEROS AL COMBOBOX1
    
            Else
                Call Crea_Archivo_Equipos_xml() ' CREA EL ARCHIVO DE  Cerveceros.XML y COMPARA SI ESISTE
            End If
        End Sub
    
    
    
    
    
        Private Sub Tool_Guardar_Equipo_Click(sender As Object, e As EventArgs) Handles Tool_Guardar_Equipo.Click
            Call Guarda_nombre_Equipos()
        End Sub
    
        Private Sub Tool_borrar_Equipo_Click(sender As Object, e As EventArgs) Handles Tool_borrar_Equipo.Click
            If ComboBox2.SelectedItem Is Nothing Then
                MsgBox("Para borrar, primero tiene que seleccionar un equipo")
            Else
                XmlNodeList_Equipos = XmlDocument_Equipos.SelectNodes("Equipos/Equipo")
                XmlNodeList_Equipos.Item(ComboBox2.SelectedIndex).ParentNode.RemoveChild(XmlNodeList_Equipos.Item(ComboBox2.SelectedIndex))
                XmlDocument_Equipos.Save(("Configuracion/Equipos.xml"))
                TextBox2.Clear()
                ComboBox2.Text = ""
                Call Carga_Equipos()
    
            End If
        End Sub
    
    
    
    
    
        Private Sub Bt_Guardar_Maestro_Click(sender As Object, e As EventArgs) Handles Bt_Guardar_Maestro.Click
            Try
                If TextBox1.Text = "" Then
                    MsgBox("No a escrito el nombre del maestro cervecero")
                Else
                    Label3.Text = "si hay imagen"
                    'CREA EL DIRECTORIO DEL NOMBRE DEL CERVEZERO
                    My.Computer.FileSystem.CreateDirectory("Configuracion\" & TextBox1.Text)
                    ComboBox1.Text = TextBox1.Text
                    If Pict_Confi_Cervecero.Image Is Nothing Then
                    Else
                        
                        Pict_Confi_Cervecero.Image.Save("\Configuracion\" & TextBox1.Text & "\imagen1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
                       
                        If Pict_Confi_Cervecero.Tag <> ImageList1.Images.Keys(0) Then
                            Receta_Nueva.Pict_Confi_Cervecero.Image = Pict_Confi_Cervecero.Image
                        End If
    
    
                    End If
                    ComboBox2.Items.Clear()
                    If ComboBox1.FindStringExact(TextBox1.Text.Trim()) > -1 Then
    
                        '  MessageBox.Show("El nombre del cervecero ya existe en la lista elija otro.")
                        MsgBox("El nombre del cervecero ya existe en la lista elija otro o desea mosifica el que esta .", vbYesNo + vbQuestion, "Titulo")
    
                        If vbYes Then
    
                            XmlNodeList_Cerveceros = XmlDocument_Cerveceros.SelectNodes("Cerveceros/Maestro_Cervecero")
                            Dim child As XmlNode = XmlDocument_Cerveceros.SelectSingleNode("Cerveceros/Maestro_Cervecero")
    
    
                            For Each node In XmlNodeList_Cerveceros
                                If node.ChildNodes(0).InnerText = ComboBox1.SelectedItem Then
                                    '' ''        '' ''node.ChildNodes(0).InnerText = TextBox1.Text
                                    '' ''        '' ''If Pict_Confi_Cervecero.Tag <> ImageList1.Images.Keys(0) Then
                                    '' ''        '' ''    node.ChildNodes(1).InnerText = 1
                                    '' ''        '' ''Else
                                    '' ''        '' ''    node.ChildNodes(1).InnerText = 0
                                    '' ''        '' ''End If
                                    If Not (child Is Nothing) Then
                                        Dim nr As New XmlNodeReader(child)
                                        While nr.Read()
                                            'MsgBox(nr.Value)
                                            ComboBox2.Items.Add(nr.Value)
                                        End While
                                    End If
    
                                    '' ''        Dim Nombre_Equipo As XmlNode = XmlDocument_Cerveceros.CreateElement(XmlNodeType.Element, "Nombre_Equipo", "")
                                    '' ''        Dim Litros_Equipo As XmlNode = XmlDocument_Cerveceros.CreateElement(XmlNodeType.Element, "Litros_Equipo", "")
                                    '' ''        node.AppendChild(Nombre_Equipo).InnerText = Replace(TextBox2.Text, Cadena, "")
                                    '' ''        node.AppendChild(Litros_Equipo).InnerText = TextBox3.Text
    
                                    '' ''        '' ''Dim Cervecero As XmlNode = XmlDocument_Cerveceros.CreateNode(XmlNodeType.Element, "Maestro_Cervecero", "")
                                    '' ''        '' ''Dim Nombre_Equipo As XmlNode = XmlDocument_Cerveceros.CreateElement(XmlNodeType.Element, "Nombre_Equipo", "")
                                    '' ''        '' ''Dim Litros_Equipo As XmlNode = XmlDocument_Cerveceros.CreateElement(XmlNodeType.Element, "Litros_Equipo", "")
                                    '' ''        '' ''Nombre_Equipo.InnerXml = TextBox2.Text '& " " & TextBox3.Text & " Litros"
                                    '' ''        '' ''Litros_Equipo.InnerXml = TextBox3.Text
                                    '' ''        '' ''Cervecero.AppendChild(Nombre_Equipo)
                                    '' ''        '' ''Cervecero.AppendChild(Litros_Equipo)
                                    '' ''        '' ''nodeRoot.AppendChild(Cervecero)
                                    '' ''        'XmlDocument_Cerveceros.Save("Configuracion/Cerveceros.xml")
                                End If
                            Next
                            XmlDocument_Cerveceros.Save("Configuracion/Cerveceros.xml")
                        End If
                        Call Guarda_nombre_Equipos()
                        '' ''Close()
                    Else
                        Call Guarda_nombre_cervecero()
                        Call Guarda_nombre_Equipos()
                        '' ''Close()
                    End If
    
                    Call Carga_Maestros_Cerveceros()
                End If
            Catch ex As Exception
                MsgBox(ex.ToString())
            End Try
        End Sub
    
        Private Sub Bt_Borrar_Maestro_Click(sender As Object, e As EventArgs) Handles Bt_Borrar_Maestro.Click
            If ComboBox1.SelectedItem Is Nothing Then
                MsgBox("Para borrar, primero tiene que seleccionar a un Maestro Cervecero")
            Else
                If System.IO.Directory.Exists("Configuracion\" & ComboBox1.Text) Then
                    System.IO.Directory.Delete("Configuracion\" & ComboBox1.Text, True)
                    Xmlnode_Cerveceros = XmlDocument_Cerveceros.SelectSingleNode("/Cerveceros/Maestro_Cervecero[Nombre = '" & ComboBox1.Text & "']")
                    If Not Xmlnode_Cerveceros Is Nothing Then
                        Xmlnode_Cerveceros.ParentNode.RemoveChild(Xmlnode_Cerveceros)
                        XmlDocument_Cerveceros.Save(("Configuracion/Cerveceros.xml"))
                    End If
                Else
    
                End If
    
    
            End If
    
        End Sub
        Private Sub Btx_Equipos_MouseClick(sender As Object, e As MouseEventArgs) Handles Btx_Equipos.MouseClick
            Btx_Equipos.ContextMenuStrip.Show(Btx_Equipos.PointToScreen(e.Location))
        End Sub
    
        Private Sub BtX_Maestros_MouseClick(sender As Object, e As MouseEventArgs) Handles BtX_Maestros.MouseClick
            BtX_Maestros.ContextMenuStrip.Show(BtX_Maestros.PointToScreen(e.Location))
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            'SACA LA COLECCION DE NODOS DEL NODO HIJO DEL XML
            XmlNodeList_Cerveceros = XmlDocument_Cerveceros.SelectNodes("Cerveceros/Maestro_Cervecero")
    
            Dim child As XmlNode = XmlDocument_Cerveceros.SelectSingleNode("Cerveceros")
    
            Dim primerHijo As XmlNode = child.ChildNodes.Item(ComboBox1.SelectedIndex)
    
            If primerHijo.HasChildNodes Then
                Dim i As Integer
                ComboBox2.Items.Clear()
                For i = 0 To primerHijo.ChildNodes.Count - 1
    
                    If primerHijo.ChildNodes(i).Name = "Nombre_Equipo" Then
                        ComboBox2.Items.Add(primerHijo.ChildNodes(i).InnerText)
                    End If
    
    
    
                Next i
            End If
            'SACA LA COLECCION DE NODOS DEL NODO HIJO DEL XML
            XmlDocument_Cerveceros.Save("Configuracion/Cerveceros.xml")
        End Sub
    
        Private Sub ToolStripMenuItem2_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem2.Click
            Pict_Confi_Cervecero.Image = ImageList1.Images(0)
            Pict_Confi_Cervecero.Tag = ImageList1.Images.Keys(0) 'Sabe el nombre de la imagen de picturebox y imagelist
            Label3.Text = Pict_Confi_Cervecero.Tag
        End Sub
    
        
    End Class

    lunes, 24 de julio de 2017 21:09
  • Tienes un sitio más que te puede estar bloqueando ficheros:

    Pict_Confi_Cervecero.Load(strRutaArchivoImagen)

    Si no recuerdo mal, el método Load del picturebox también bloquea el fichero cargado. En principio, se debe poder resolver de manera similar al .Image, usando también un Stream para realizar la carga.

    Puede ser que haya algún otro sitio donde también se bloquee el fichero, solo he examinado el código superficialmente a simple vista. Si fuera necesario, recórrelo paso a paso con el debugger tratando de abrir el fichero después de ejecutar cada paso que sea dudoso, hasta que descubras dónde exactamente se queda bloqueado.

    lunes, 24 de julio de 2017 22:06
  • en esta ruta carga el fichero arrastrando la imagen desde cualquier lugar no carga la imagen cuando arranco el programa

    Pict_Confi_Cervecero.Load(strRutaArchivoImagen)

    martes, 25 de julio de 2017 5:43
  • Gracia por todo 

    el problemas ya esta solucionado era por culpa de \

    en vez esta asi "Configuracion\" & TextBox1.Text & "\Imagen.jpg"

    estaba asi "\Configuracion\" & TextBox1.Text & "\Imagen.jpg"

    martes, 25 de julio de 2017 6:23
  • Nada sigo con el mismo problema 

    solo graba el archivo si la imagen estar cargada previa mente en el picture

    si cargo una imagen con el combobox en el picture y intento guardarla es cuando me da el error

    martes, 25 de julio de 2017 7:22
  • Has coregido esto también

    Xmlnode_Cerveceros = XmlDocument_Cerveceros.SelectSingleNode("/Cerveceros/Maestro_Cervecero[Nombre = '" & ComboBox1.Text & "']")

    martes, 25 de julio de 2017 8:06
  • eso esta en el boton para borrar al cervecero

    martes, 25 de julio de 2017 8:31
  • Lo he solucionado de esta manera

     If ImageList1.Images.Count = 1 Then
    
                                ImageList1.Images.Add(TomarImagenDeArchivo("Configuracion\" & TextBox1.Text & "\Imagen.jpg"))
                                MsgBox(ImageList1.Images.Count)
                                Pict_Confi_Cervecero.Image = ImageList1.Images(1)
                                Pict_Confi_Cervecero.Tag = ImageList1.Images.Keys(1) 'Sabe el nombre de la imagen de picturebox y imagelist
                                Label3.Text = Pict_Confi_Cervecero.Tag
                                'MsgBox(ImageList1.Images.Count)
    
                            Else
                                ImageList1.Images.RemoveAt(1)
                                ImageList1.Images.Add(TomarImagenDeArchivo("Configuracion\" & TextBox1.Text & "\Imagen.jpg"))
                                Pict_Confi_Cervecero.Image = ImageList1.Images(1)
                                Pict_Confi_Cervecero.Tag = ImageList1.Images.Keys(1) 'Sabe el nombre de la imagen de picturebox y imagelist
    
                                Label3.Text = Pict_Confi_Cervecero.Tag
    
                            End If

    martes, 25 de julio de 2017 8:38