Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#1551
.NET (C#, VB.NET, ASP) / Re: Pequeña Duda con C#
18 Noviembre 2017, 07:59 AM
Por favor, publica las dudas sobre C# en el subforo de programación .NET.

Cita de: Avispon99 en 18 Noviembre 2017, 01:58 AMcomo ya sabran cada vez que uno clikea por error alguna herramienta de la ventana de diseño aunque sea un simple "Label" aparece un Metodo "private void" ...

Estás describiendo el comportamiento por defecto al hacer DOBLE click (que no click) sobre un control en el diseñador de Forms, se autogenera el código del controlador del evento por defecto especificado en la clase del control, esto lo controla Visual Studio según el evento especificado en el atributo de clase DefaultEvent, por ejemplo:

Código (csharp,1,3) [Seleccionar]
[DefaultEvent("Click")]
public class Button {
public event EventHandler<EventArgs> Click;
   // ...
}


Si realmente te ocurre mucho ese "error", entonces lo que deberías hacer es no hacer doble click a un control o Form sabiendo lo que va a suceder despues, o quizás quieras probar a disminuir la velocidad de doble click en las propiedades del Mouse del Panel de Control en Windows.

...O simplemente cuando ese "error" te suceda, puedes deshacer la autogeneración del código pulsando la combinación de teclas 'CONTROL+Z'.

Cita de: Avispon99 en 18 Noviembre 2017, 01:58 AMlo cual es bastante molesto por que el codigo queda recargado con metodos de tipo (EventArgs) que no voy a usar, y si trato de borrar esos metodos que no voy a usar oviamente el programa entra en conflicto y me toca cerrar sin guardar y volver a abrir el Visual Studio para no perder el trabajo.. Asi que quisiera saber si hay alguna forma de remover esos metodos que no me interesan

Estoy completamente de acuerdo en que es muy molesto, el problema viene a raiz de que en C#, a diferencia de VB.NET, no es suficiente con eliminar el bloque de código del controlador de un evento, sino que también se requiere eliminar la sentencia de asociación del evento que se autogenera (como es lógico, ya que C# no posee la palabra reservada Handles, y esto hace que en C# se vuelva algo molesto y nos quite productividad al programar), el cual lo puedes encontrar definido en la clase del código autogenerado del diseñador del Form...

Ejemplo:

Form1.cs
Código (csharp,3) [Seleccionar]
namespace WindowsFormsApp1 {
   public partial class Form1 : Form {
       private void button1_Click(object sender, EventArgs e) { }
   }
}


Form1.Designer.cs
Código (csharp,11) [Seleccionar]
namespace WindowsFormsApp1 {
   partial class Form1 {
       //...
       private void InitializeComponent() {
           this.button1 = new System.Windows.Forms.Button();
           this.SuspendLayout();
           //
           // button1
           //
           //...
           this.button1.Click += new System.EventHandler(this.button1_Click);
           //...
       }
       //...
   }
}


Supongo que ha quedado claro lo que debes hacer: cuando elimines el código de un controlador de evento en la clase FormXX.cs, también debes eliminar la asociación de evento de dicho control, en el bloque del método InitializeComponent de la clase FormXX.Designer.cs

Saludos.
#1552
Por favor, LEE y respeta las normas del foro y las normas del subforo d eprogramación general. Está prohibido hacer doble post, y por segunda vez: debes formatear el código que pubiques. Lo siento por ser "duro", pero sino esto se convierte en un caos. Formatea el código, no cuesta nada.




En tu escenario, creo que entonces la solución que más te convendría sería hacer esto:

Cita de: Eleкtro en 17 Noviembre 2017, 17:30 PMY otra forma sería iterar los elementos de la colección Application.OpenForms.

Ejemplo usando LINQ:
Código (csharp) [Seleccionar]
Form f = (from item in Application.OpenForms.Cast<Form>()
         where item.Name.Equals("Form1")
         select item
        ).Single();
       
f.Show();


Pero lo que intentas hacer en realidad por lo que comentas, parece que quieres hacer una especie de Wizard, y en ese caso no lo estás haciendo de forma correcta, ya que lo que deberías hacer es definir una clase que controle la navegación por los Forms, en lugar de hardcorear sentencias de navegación directamente en cada clase de Form. Puedes hacerlo como prefieras, te va a funcionar igual, pero no es lo más correcto hacerlo así.

Aquí tienes un buen template para el desarrollo de Wizards:

Y aquí más info y documentación:

Saludos
#1553
Cita de: El_Andaluz en 17 Noviembre 2017, 17:51 PM
Se ve claramente como los senderitas lo acorralan un poco en el sendero y no lo dejan que suba y se vaya corriendo para donde se tenga que ir, no tienen porque ser hacia los senderitas.

Por favor, mira a que distancia está la cámara, y el otro tio que está solo con las bambas amarillas, y los que van vestidos azúl, ¿eso es acorralamiento?, practicamente la mayoría están lejos probablemente por instinto para guardar un margen de seguridad de distancia al animal salvaje y PELIGROSO, por que todos sabemos que eso de "No moleste a los animales y ellos no te aran nada así de simple" no es cierto con este tipo de animales.

Saludos...
#1554
Cita de: alkalo en 17 Noviembre 2017, 17:37 PM
Opto por la sencilla, pero como puedo desde la segunda llamar a la primera sentencia?

No entiendo a que te refieres exactamente, ¿lo que quieres no es instanciar/mostrar el form secundario, y que cuando el form secundario se cierre, o sin que se cierre desde un botón del form secundario por ejemplo, poder mostrar el form principal?, para eso ya se te ofrecieron soluciones, si no es eso lo que quieres hacer entonces sería mejor si muestras un ejemplo en pseudocódigo de lo que quieres conseguir.

saludos
#1555
Hola. Por favor, publica las dudas sobre C# en el subforo de programación .NET, y debes formatear el código usando las etiquetas GeShi...

Respondiendo a tu pregunta, hay varias formas. La más simple y sencilla sería abrir el Form secundario a modo de ventana de diálogo, lo que detendrá la ejecución del Form desde el que se haya abierto (en tu caso, el Form principal), y entonces cuando el Form secundario se cierre, puedes continuar con una sentencia para mostrar el Form desde el que se abrió el Form secundario... un ejemplo para que se entienda:

Código (csharp,3) [Seleccionar]
this.Hide();
Form2 frm = new Form2();
frm.ShowDialog();
this.Show();

Nota: ten presente que la función Form.ShowDialog() devuelve el resultado del diálogo, pero en este caso en concreto es innecesario evaluarlo, así que lo omití.




Otra forma sería crear un contexto de aplicación, lo que nos aportaría el beneficio de poder mantener una referencia corta para el acceso al Form principal desde cualquier parte de nuestra aplicación. Un ejemplo:

Program.cs
Código (csharp,8,15,16) [Seleccionar]
using System;
using System.Windows.Forms;

namespace WindowsFormsApp1 {

   static class Program {

       internal static ApplicationContext Context { get; set; }

       [STAThread]
       static void Main() {
           Application.EnableVisualStyles();
           Application.SetCompatibleTextRenderingDefault(false);

           Program.Context = new ApplicationContext(new Form1());
           Application.Run(Context);
       }
   }
}


Entonces, desde un form secundario puedes llamar al Form Principal de la siguiente manera:
Código (csharp,3) [Seleccionar]
// ...
private void Form2_FormClosed(object sender, FormClosedEventArgs e) {
   Program.Context.MainForm.Show();
}
// ...





Y otra forma sería iterar los elementos de la colección Application.OpenForms.

...O también podrías pasarle una referencia del form principal al form secundario. Como digo, maneras hay muchas.

Saludos.
#1556
Cita de: El_Andaluz en 17 Noviembre 2017, 13:36 PM
Una vez subes ese vídeo a las redes sociales, estamos todo en nuestro derecho a juzgar y opinar sobre lo que vemos en el vídeo, aunque tengamos distinta formas de ver las cosas.

Si me parece muy bien pero es que el problema está en que este tipo de videos sensacionalistas siempre se publican y se comparten a modo de manipulación, no hay más que ver el título del video, directamente los llama "RETRASAOS"... y ya la gente al ver el video opinará de forma influenciada por lo de "RETRASAOS" y lo que parece que ocurre en el video, la gente se acumulará en masa para opinar todos lo mismo, para opinar que los del video son unos hijos de ****. No piensan con razonamiento, no le dan el beneficio de la duda a los individuos del video, y eso no es ser crítico ni imparcial...

Es como si ahora yo publico un video de 10 segundos donde sale un tio que le da una patada a un perro que parece indefenso y lo deja K.O. en el suelo, pero lo que no te muestro en el video ni tampoco te digo es que ese perro tiene la rabia y mordió a la persona en la pierna, y la persona solo estaba intentando defenderse, y yo te vendo el video como algo que debes apoyar para luchar contra el maltrato animal. Eso se llama manipulación, y nos lo tragamos a cada minuto en las noticias de la TV y en muchísimos de estos videos de Youtube, en más de los que podrías creer. Nunca se sabe la historia real que puede haber detrás de lo que tú ves en un simple video de corta duración... nunca.

Cita de: El_Andaluz en 17 Noviembre 2017, 13:36 PMIgual que si tu dices que has visto naves extraterrestres estamos en nuestro derecho Opinar sobre ese tema que tu comentas, es solo un ejemplo aunque no viene al caso, me refiero que juzgamos lo que vemos. :P

Que me salgas con eso es un golpe bajo, por que no deberías usarlo de ese modo solo por que no te gusta mi opinión sobre este tema, ya que como tu dices eso de la nave extraterrestre no viene a cuento de nada, así que te lo dejo pasar, por que sino al final me voy a cabrear yo.

Saludos.
#1557
Scripting / Re: Descargar archivos dede un .bat
17 Noviembre 2017, 16:17 PM
Hola. Dices que estás usando un Batch-script, pero estás usando Powershell por que te has dado cuenta de las limitaciones de Batch (ya que no sirve para descargar un archivo)... y es por ello que te convendría mucho más desarrollar todo el script en Powershell. Deberías olvidar Batch, más siendo administrador de un server... Powershell fue creado para satisfacer las necesidades de un admin.

Cita de: dgalazv en 17 Noviembre 2017, 13:43 PM
ahora me diran que utilice wget, esto funciona super bien, pero como es un script que al final lo convierto a .exe, quedo en las mismas ya que al bajar wget queda corrupto y no funciona.

Eso no lo entiendo muy bien, ya que siempre tienes al alcance la posibilidad de tener el script y wget.exe ambos en el mismo directorio, es decir, una copia de wget.exe que hayas descargado bien con Firefox por ejemplo... y además también puedes empacar el script y wget en el mismo archivo (.exe), así que no le veo el problema.

...Eso sería una solución. De todas formas lo de recurrir a Batch y a programas de terceros como WGET teniendo Powershell lo veo innecesario, así que intentaré ofrecerte ayuda en ese sentido:

Primero prueba con una sintaxis más completa del cmdlet Invoke-WebRequest:
Código (delphi) [Seleccionar]
Invoke-WebRequest -URI "http://.../archivo.dat" -Method "Default" -DisableKeepAlive -TimeoutSec "60" -OutFile ".\archivo.dat"

Si eso te da algún tipo de problema, puedes probar usando la clase System.Net.WebClient de .NET Framework:
Script.ps1
Código (delphi) [Seleccionar]
$url = "http://.../archivo.dat"
$output = ".\archivo.dat"

$wc = New-Object System.Net.WebClient
$wc.DownloadFile( $url, $output )
$wc.Dispose()

Exit(0)


...si realmente quieres hacer esto desde Batch, entonces simplificarías la ejecución de Powershell de la siguiente manera:
Script.cmd
@Echo OFF
SET "url=http://.../archivo.dat"
SET "output=.\archivo.dat"

"Powershell.exe" "(New-Object System.Net.WebClient).DownloadFile(\"%url%\", \"%output%\")"

Exit /B 0


Si esta solución de la clase System.Net.WebClient te sigue "descargando un archivo corrupto", entonces yo creo que el problema no tiene que ver relación con el modo en el que estás descargando el archivo... sino con alguna otra cosa.

Saludos!
#1558
Cita de: El_Andaluz en 17 Noviembre 2017, 12:41 PM
Eleкtro
Yo lo que veo en el vídeo y mas gente no es lo mismo de lo que tu interpretas desde mi punto de vista.

Yo veo el vídeo un grupo de Senderista empujando al jabalí con un palo para tirarlo cuesta abajo eso es lo que se ve en el vídeo, porque no siguen ellos para adelante y deja que el jabalí coja su camino ? Hubiera seguido caminando como puede mas arriba de la montaña

¿Y tú como puedes saber eso?, a lo mejor los senderistas estaban hartos de esperar a que el animal siguiera su camino para ellos seguir sin peligro, hasta que al final se cansaron y decidieron utilizar el palo para intentar mover al bicho y lo tiraron sin querer, eso es una posibilidad. El video no es una prueba para demostrar lo que haya ocurrido realmente. Que a lo mejor me equivoco y son unos mal nacidos que lo hicieron intencionadamente por "diversión" y el maltrato a un animal que estaba tranquilo, pero es que eso yo no lo se ni tu tampoco...

Por ese motivo, sigo pensando que nadie tiene el derecho de juzgar a los senderistas de ese video por que le estén tocando con un palito al animal, que no se sabe si al final se resbaló o realmente lo tiraron ellos, pero es que eso da igual, por que si nosotros estuvieramos en la misma situación de peligro quizás no hariamos las cosas lo mejor que lo podriamos hacer en otras circunstancias... y no nos gustaria que los demás nos juzgasen por ello.

Cita de: El_Andaluz en 17 Noviembre 2017, 12:41 PMLos animales salvajes son muy desconfiado otra cosa es cuando tu lo molesta o te metes en su territorio ha molestarlos, entonces si corres peligro de que te pueda atacar pero mientras no le hagas nada, no pasa nada absolutamente.

Al caso si tu no molesta al animal en su estado natural no te van hacer nada.

Eso siempre depende de la suerte que tengas y las ganas del jabalí de ignorarte, o matarte. Dices que has estado a una distancia corta de un Jabalí con sus crias al lado, y no te ha hecho nada, pues compi, tienes mucha, pero mucha suerte, por que el animal te podría haber reventado por considerarte una amenaza para sus crías, y eso creo que lo sabes aunque digas que no es así, que son "tranquilos", quizás lo que viste fue a un jabalí pequeño y poco valiente. Podriamos estar debatiendo si sí o si no eternamente, pero es que es una cuestión indiscutible de sentido común...

[youtube=640,360]https://www.youtube.com/watch?v=9eFVL6g1w8g[/youtube]

[youtube=640,360]https://www.youtube.com/watch?v=eBpQwltd3kI[/youtube]

[youtube=640,360]https://www.youtube.com/watch?v=k1nnJ0YAXFA[/youtube]

[youtube=640,360]https://www.youtube.com/watch?v=4sh_RPEVaJI[/youtube]

Saludos.
#1559
Cita de: Machacador en 17 Noviembre 2017, 09:55 AMUsa la varita mágica del Unlocker... https://unlocker.uptodown.com/windows

Debo reconocer que ya no me acordaba de este tipo de herramientas, podrían servir para el caso. Como alternativa al programa que has propuesto a mi me gustaría recomendar el que yo utilicé en el pasado para solucionar problemas esporádicos con los handles de archivos, File Governor:




Saludos!
#1560
Cita de: Fron99 en 16 Noviembre 2017, 20:51 PMel problema es que si no tengo abierto las propiedades del archivo ese proceso no me sale y solo me sale cuando abro las propiedades.

No se que hacer porque si al terminar el proceso que es el que molesta se me cierran las propiedades del archivo al que quiero quitarle los metadatos. Como finalizo el proceso para que no me de problemas y sin que me cierre las propiedades del archivo??

Entiendo. Es un problema algo extraño. Supongo que has intentado modificar las propiedades del archivo y no has podido por culpa de una instancia del proceso dllhost.exe. Por si acaso quiero aclarar para evitar una posible confusión, que si te aperece el proceso dllhost.exe no es algo malo ni perjudicial, es algo normal que en principio no debe entrar en conflicto con nada, lo perjudicial es cuando una instancia de dllhost.exe no se cierra por si sola tras un corto periodo de tiempo, y eso da problemas como los que te está dando a ti.

Bien, ¿por casualidad estás usando Windows 10?, y en caso afirmativo, ¿puedes decir que versión especica de Windows 10 estás usando? ( si no sabes como averiguarlo, simplemente escribe en la consola de windows winver.exe). Te comento esto por que he encontrado un video de un usuario en Youtube que al parecer tiene el mismo problema que tú, es decir, cuando él abre el diálogo de propiedades (y el de metadatos) de un archivo, siempre le aparece una instancia del proceso dllhost.exe que no se cierra, y que resulta en el particular error de "COM Surrogate tiene abierto el archivo blah blah blah" al intentar modificar el archivo, y a donde yo quiero llegar a parar es que... si te fijas en las pegatinas/letreros del video al principio, leerás que al parecer se trata de un bug de versiones antiguas de Windows 10, y que en teoría se puede resolver actualizando como mínimo a la versión Anniversay Update de Windows 10 (1607), así que si tus circunstancias son exactas a la de este usuario ya sabes lo que deberías hacer... actualizarte a la versión que ese usuario propone, o a la versión más actual: Windows 10 Fall Creators Update (1709)

[youtube=640,360]https://www.youtube.com/watch?v=lxd0FXlHAUk[/youtube]

...Yo solo puedo decirte que no puedo reproducir el problema que tienes, estoy usando Windows 10 Fall Creators Update, y al abrir el diálogo de propiedades de cualquier documento multimedia no me aparece ninguna instancia del proceso dllhost.exe. Lo siento por no poder ayudar más.

Saludos!