none
Erro Using System.IDisposable WPF RRS feed

Respostas

Todas as Respostas

  • Olá Fábio!

    Você está tentando instanciar um objeto dentro de um bloco "using", só que a classe não implementa a interface IDisposable.. Blocos "using" só podem ser utilizados com instâncias de classes que implementem essa interface..

    Nesse caso, você só precisa remover o bloco "using" da declaração:

    var Consultaprod = new Consultar_Produto_orc();

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    segunda-feira, 8 de janeiro de 2018 13:58
    Moderador
  • A sua resposta funciona, mas não na sua totalidade devido a existir outro código que depende deste. Vou colocar o código para ver se me pode ajudar.

    Form 1_onde colocar os dados

    private void btnproduto_Click(object sender, RoutedEventArgs e)
            {
                using (var Consultaprod = new Consultar_Produto_orc())
                {
                    if (Consultaprod.ShowDialog().Equals(System.Windows.Forms.DialogResult.OK))
                    {
                        txtcliente.Text = Consultaprod.Cliente.ToString();
                    }
                }
            }

    Form 2_Consultar com Datagrid

      public string Cliente { get; set; }

     private void dataproduto_MouseDoubleClick(object sender, MouseButtonEventArgs e)
            {
                DialogResult = System.Windows.Forms.DialogResult.OK;==> Não é possível converter implicitamente tipo "System.Windows.Forms.DialogResult" em "bool?"
                if(dataproduto.SelectedItems.Count>0)
                {
                    Cliente = Convert.ToString(dataproduto.SelectedItems[0].ToString);==> Não é possível converter "grupo métodos" para "object" 
                }
            }

    Agradeço a ajuda obrigado

     
    domingo, 14 de janeiro de 2018 12:12
  • Olá Fábio!

    No WPF o DialogResult é simplesmente um valor booleano, e não um enumerador.. Ou seja, você tem que retornar "true" caso o diálogo tenha sido confirmado ou "false" caso contrário.. Ou seja, no caso do seu método "dataproduto_MouseDoubleClick", você teria que setar "DialogResult = true"..

    Já a questão do DataGrid, primeiramente ficou faltando os parênteses na chamada de "ToString".. Ou seja, deveria ser ToString().. Mas, não sei se é essa conversão mesmo que você deveria fazer nesse caso.. Como você está bindando os dados no DataGrid? Com uma DataTable? Você poderia postar o código?

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    terça-feira, 16 de janeiro de 2018 04:51
    Moderador
  • public partial class Consultar_Produto_orc : Window { public string Referencia { get; set; } public Consultar_Produto_orc() { InitializeComponent(); InitializeComponent(); binddatagrid(); strConexao = ConfigurationManager.ConnectionStrings["ConexaoOrcamento"].ConnectionString; } string strConexao = "Data Source=192.168.1.73,8302;Initial Catalog=Orçamentos;Persist Security Info=True;User ID=Tratinox;Password=tratinox"; SqlConnection conn = null; Este é o código da janela que contém a datagrid

    private void binddatagrid() { conn = new SqlConnection(strConexao); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.CommandText = "Select Referencia, Descricao,Dimencoes,Dm2,Peso,Processo1,Processo2,Processo3,Suporte from Produto"; cmd.Connection = conn; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable("Produto"); da.Fill(dt); dataproduto.ItemsSource = dt.DefaultView; } private void dataproduto_MouseDoubleClick(object sender, MouseButtonEventArgs e) { DialogResult = true; if (dataproduto.SelectedItems.Count > 0) { Referencia = Convert.ToString(dataproduto.SelectedItems[0].ToString()); } } } }


    terça-feira, 16 de janeiro de 2018 16:51
  • Olá Fábio!

    Se você fez um bind com o DataTable.DefaultView, provavelmente o item selecionado será uma DataRow (ou talvez uma DataRowView).. Tente alterar o seu código desta maneira (substituindo com o nome da coluna que você quer retornar):

    if (dataproduto.SelectedItems.Count > 0) 
    {
    	var linha = dataproduto.SelectedItems[0] as DataRow;
    	if (linha != null)
    	{
    		Referencia = linha["NomeDaColunaQueVoceQuerRetornar"].ToString();
    	}
    }

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    quarta-feira, 17 de janeiro de 2018 05:09
    Moderador
  • Olá André

    Já fiz a alteração, mas não deu certo.

    Ele conta 1, mas valor referencia aparece como null.

    quarta-feira, 17 de janeiro de 2018 11:39
  • Você colocou um breakpoint onde o SelectedItems está sendo convertido para DataRow? Ele conseguiu converter para DataRow ou ele pulou a execução do "if linha != null"?

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    quarta-feira, 17 de janeiro de 2018 14:48
    Moderador
  • Aqui vai um vídeo para mostrar o problema.

    https://1drv.ms/f/s!AtMC4doFQPEK0BFP3T_KCNkEXGMs

    quinta-feira, 18 de janeiro de 2018 15:40
  • Olá Fábio!

    Pois é.. Ele não está conseguindo converter o SelectedItem para DataRow.. Ele deve ser de outro tipo, como mencionei anteriormente..

    Coloque a expressão "dataproduto.SelectedItems[0]" ali na janela de "Automáticos" para ver qual é o valor e tipo dela.. Você terá que converter para o tipo correto e pegar a informação na linha..

    Mas, uma coisa de cada vez.. Primeiro coloque a expressão ali na janela e veja o tipo que está sendo retornado..

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    sexta-feira, 19 de janeiro de 2018 04:58
    Moderador
  • Está em DataRowView

    Coloquei outro vídeo. Neste aparece que ele foi buscar a referencia, mas não a colocou na textbox

    • Editado Fábio2014 sexta-feira, 19 de janeiro de 2018 12:06
    sexta-feira, 19 de janeiro de 2018 11:54
  • Olá Fábio!

    Se está vindo DataRowView, tente utilizar este código:

    if (dataproduto.SelectedItems.Count > 0) 
    {
    	var linha = dataproduto.SelectedItems[0] as DataRowView;
    	if (linha != null)
    	{
    		Referencia = linha.Row["NomeDaColunaQueVoceQuerRetornar"].ToString();
    	}
    }

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    quarta-feira, 24 de janeiro de 2018 15:42
    Moderador
  • Olá André

    Continuo com o problema de este não devolver o valor a textbox. 

    quinta-feira, 25 de janeiro de 2018 14:46
  • Olá Fábio!

    Então muito provavelmente o tipo não é DataRowView.. Será que você poderia gravar um vídeo atualizado, nos mesmos moldes do que você gravou em uns posts atrás?

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    sexta-feira, 26 de janeiro de 2018 09:50
    Moderador
  • Olá André

    Já gravei outro vídeo, mais pormenorizado. Espero que ajude. 

    Ele não se encontra a parar no Código "txtprod.Text=consultaprod.Referencia.ToString();",

    antes tenho "if(Consultaprod.ShowDialog().Equals(System.Windows.Form.DialogReslt.OK))"; ele aqui para e avança para o fecho

    • Editado Fábio2014 domingo, 28 de janeiro de 2018 16:54
    domingo, 28 de janeiro de 2018 16:14
  • Olá Fábio!

    O problema agora está na sua checagem pelo retorno do método ShowDialog.. No WPF, diferentemente do Windows Forms, o retorno desse método é um valor booleano (true ou false), e não um DialogResult..

    Altere o seu "if" para:

    if(Consultaprod.ShowDialog())

    Aí sim o código deverá funcionar corretamente..

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    segunda-feira, 5 de fevereiro de 2018 04:28
    Moderador
  • Gravidade Código Descrição Projeto Arquivo Linha Estado de Supressão
    Erro CS0266 Não é possível converter implicitamente tipo "bool?" em "bool". Existe uma conversão explícita (há uma conversão ausente?) Informações Peças Clientes C:\Users\ben_f\Desktop\WpfApp1\WpfApp1\Pré Orçamento.xaml.cs 42 Ativo

    Está a dar este erro.

    terça-feira, 6 de fevereiro de 2018 09:48
  • Olá Fábio!

    Faltou um detalhezinho:

    var resultado = Consultaprod.ShowDialog();
    if (resultado != null && Convert.ToBoolean(resultado))
    {
    	// resto do código...
    }

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    • Marcado como Resposta Fábio2014 segunda-feira, 19 de fevereiro de 2018 11:44
    quarta-feira, 14 de fevereiro de 2018 04:23
    Moderador
  • https://social.msdn.microsoft.com/Forums/pt-BR/2a6ca2d6-ab1f-4e44-bdfd-a31e1d8834cd/ativar-textbox-co-valores-de-outra?forum=wpfpt
    segunda-feira, 19 de fevereiro de 2018 11:45
  • Olá André.

    Agradecia a sua ajuda neste tópico.

    Obrigado

    https://social.msdn.microsoft.com/Forums/pt-BR/e2bed0e5-2f75-4e91-8d60-0a2b70f3bfbc/guardar-dados-de-uma-datagrid-na-base-de-dados?forum=wpfpt

    sexta-feira, 23 de fevereiro de 2018 16:57