none
Datagrid não mostra barra de rolagem após coletar dados do webservice com Thread no Form.Shown RRS feed

  • Pergunta

  • Olá Pessoal.

    Eu configurei um WinForm pra coletar dados de um webservice porém quando uso Thread no form; o
    datagrid não mostra a barra de rolagem.

    Se eu insiro o código em evento de um button dá certo Sad....
    Mas como preciso dele ocorrendo após o form ser carregado; deixei o evento na propriedade Shown
    do form...

    Alguém sabe me dizer porque disto?



            public FetchUser()
            {
                InitializeComponent();
            }
           
            private void FetchUser_Shown(object sender, EventArgs e)
            {
                Thread.Sleep(4000);
                Thread thread = new Thread(LoadUser);
                thread.Start();
            }

            private void LoadUser()
            {
                wsTicket wsemployee = new wsTicket();
                DataSet ds = new DataSet();
                ds = wsemployee.GetEmployee("teste");
                dataGridView1.DataSource = ds.Tables[0].DefaultView;

            }

            private void FetchUser_Load(object sender, EventArgs e)
            {

            }


    //se eu usar este evento... a barra de rolagem aparece....
            private void btnOK_Click(object sender, EventArgs e)
            {
                LoadUser();
            }




    quinta-feira, 8 de novembro de 2007 17:10

Todas as Respostas

  • Acredito que devia até dar erro no aplicativo, pelo que vi do seu código.

     

    Você está tentando atualizar um controle através de uma Thread que não o criou.

     

    Use um delegate e chame a função que atualiza a interface, algo assim:

     

     

    Code Block

    delegate void MeuDelegate();

    public Form1()

    {

    InitializeComponent();

    }

    private void button1_Click(object sender, EventArgs e)

    {

    Thread.Sleep(4000);

    Thread thread = new Thread(LoadUser);

    thread.Start();

    }

    private void LoadUser()

    {

    MeuDelegate meuMetodo = Atualiza;

    label1.Invoke(meuMetodo);

    }

    private void Atualiza()

    {

    label1.Text = "oi";

    }

     

     

    sexta-feira, 30 de novembro de 2007 18:03