Principales respuestas
Ahora tengo este error picturebox

Pregunta
-
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 FunctionHabí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
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
-
-
-
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
-
-
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)
-
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
-
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.
-
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
-
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 FunctionHabí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
-
-
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
-
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.
-
-
-
-
-
-
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