Bom dia Amigos;
Estou com algumas pequenas dúvidas, na verdade duas…
1 - Dentro do action Show eu chamo uma função que escreve em um Label, mas por incrível que pareça ela não escreve nada…Dei uma pesquisada e achei alguém que tinha o mesmo problema e resolvel exatamente desta forma, mas o meu não funciona de forma alguma…
2 - Estava procurando na web alguma function que verificava se meu form (do windows form) foi carregado. Bom me parece que sim, mas quando coloco ele no construtor ele nunca carrega. Dando uma olhada no manual do c# conheci o evento Shown é chamado quando o form for exibido pela primeira vez. Estão a pergunta vem… Estou fazendo corretamente? Qual a forma correta de se fazer?
private void SetLblProgress(string v)
{
this.lblProgress.Text = v;
}
/*verificar se meu form foi carregado*/
private bool checkedThisFormOpen()
{
bool _found = false;
foreach (Form _openForm in Application.OpenForms)
{
if (_openForm is FrmSplash)
{
_openForm.Focus();
_found = true;
}
}
return _found;
}
private void FrmSplash_Shown(object sender, EventArgs e)
{
/*testando se o form foi carregando*/
do
{
continue;
} while (!this.checkedThisFormOpen());
this.logo.Refresh();
this.lblProgress.Refresh();
this.barraProgress.Refresh();
this.SetLblProgress("Cadastrando USUÁRIOS!\nAguarde...");
this.barraProgress.Value = 25;
usuariosBll.SincGet();
}
Eu não entendi o que você precisa fazer, talvez a solução seja mais simples do que parece!
Faça um passo a passo e me mostre o que você quer fazer, conte um exemplo minimalista que ai eu consiga colocar algo para você entender!
Outra coisa é Windows Forms em .NET Framework?
Observação: coloque todas as informações.
Desculpa, mas num achei nada em C# ou Windows Form. Pensei em jogar apenas em Programação, mas imaginei que ficaria muito bagunçado. Junto com outras linguagens. Poderia fazer isso?
Bom mas vamos lá. Vamos do primeiro, Criei um Splash para que enquanto ele aparecer ele vai informando ao usuário o que esta acontecendo. E pensei em uma barra de progresso e um label para falar o que iniciou.
Então fiz isso… onde tem um um método para escrever neste label, mas n está funcionando. antes estava tentando na forma normal de se fazer (label.Text = “texto”) e não funcionou e foi por este motivo que criei o método. Em umas de minhas pesquisas tinha um cara que estava com o mesmo problema e o dele ele resolveu assim. Tem até alguns que estavam fora do método, pois estava testando.
Bom… e o segundo é identificar quando meu formulário estiver 100% carregando. que ai posso até resolver isso fora do Evento Shown, imagino que mandando escrever no label deste evendo, seja o problema.
Criei um do {} while {}
para funcionar como um verificador, não sei se isso foi feito corretamente
Você está fazendo uma Splash Screen correto ?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Splash : Form
{
public Splash()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
progressBar1.Increment(20);
progressBar1.Update();
LblProgress.Text = string.Format("Carregando {0}% ...", progressBar1.Value);
LblProgress.Update();
Update();
if (progressBar1.Value == 100)
{
timer1.Enabled = false;
progressBar1.Update();
LblProgress.Update();
Update();
Thread.Sleep(500);
Thread t = new Thread(Event_Close);
t.IsBackground = true;
t.Priority = ThreadPriority.Normal;
t.Start();
}
}
private void Event_Close()
{
if (InvokeRequired)
{
Invoke(new MethodInvoker(Event_Close));
}
else
{
Close();
}
}
}
}
Código acima, você consegue carregar as informações e mudar o porcento, e ai passando essa informação ao Label.
No código abaixo o form que chama a Splash Screen:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Splash sp = new Splash();
sp.ShowDialog();
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
1 curtida