D3POD Posted August 27, 2012 at 07:17 PM Report #473695 Posted August 27, 2012 at 07:17 PM Olá a todos, estou com uma duvida que dever ser super básica, mas que não encontro no google nada sobre isso ou simplesmente não estou a procurar de maneira correcta. O que acontece é que em VB.NET eu podia fazer... exemplo = form2.btn_abrir.txt Como faço em C#? Agradeço desde já a vossa ajuda 😉
Rechousa Posted August 27, 2012 at 09:48 PM Report #473712 Posted August 27, 2012 at 09:48 PM Assim? exemplo = form2.btn_abrir.txt; Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa
D3POD Posted August 27, 2012 at 10:17 PM Author Report #473723 Posted August 27, 2012 at 10:17 PM Hummm assim até parece fácil de mais LOL mas não me expliquei bem... realmente é assim que encontro nos tutoriais e era assim que usava no VB.NET... talvez seja melhor explicar tudo o que pretendo... Estou a fazer uma aplicação e vou na parte de actualizar. Tenho um form onde este contem uma datagridview que recebe a informação. Depois tenho varios buttons onde um é o Alterar e ao clicar nele abre um painel com uma textbox e um botão... Ora a minha ideia é colocar nessa textbox o ID do cliente que pretendo alterar e ao clicar no botão ele então abre um form com as textbox e com os dados actuais... depois é só editar o que pretendo e faço salvar para guardar... Então o que me lembrei de fazer... Ao abrir o form2 ele vai fazer um SELECT que do cliente com o ID selecionado na panel. Vou colocar o código, apesar que não está testado... muito menos deve estar correcto... private void Form2_Load(object sender, EventArgs e) { Form2 fr2 = new Form2(); Form1 fr1 = new Form1(); if (fr2.Text == "Alterar Cliente - Gclient") { btn_alterar.Visible = true; btn_grava.Visible = false; OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Clientes.accdb;Persist Security Info=False"); string query = " UPDATE Clientes SET [Nome] = @nome, [Telefone] = @telefone, [Telemóvel] = @telemovel, [Morada] = @morada, [Contribuinte] = @contribuinte, = @email, [Licença] = @licença, [Activação] = @activação WHERE ID = @ID "; OleDbCommand command = new OleDbCommand(query, conn); command.Parameters.Add("@ID", OleDbType.Integer).Value = Form1.txt_id.text; } else { btn_grava.Visible = true; btn_alterar.Visible = false; } } o código ainda nem está completo... alias nem sei se com este código vou obter o que pretendo... pouco sei de C# ou de outra linguagem, estou ainda a aprender. Basicamente com este código ele devia carregar a informação no form2 do cliente que tivesse o ID igual ao colocado na textbox no painel... Espero que me possam ajudar 😉 Um abraço
Gonka Posted August 28, 2012 at 10:08 AM Report #473769 Posted August 28, 2012 at 10:08 AM E quando o Form1 é aberto, txt_id tem algum texto?
rumbafum Posted August 28, 2012 at 01:09 PM Report #473795 Posted August 28, 2012 at 01:09 PM Assim à vista, tens aí dois problemas. A propriedade de texto da TextBox é Text e não text ou txt, o controlo txt_id tem que ser público para conseguires aceder a esse valor num outro contexto. Por default os controlos são privados. Aconselho-te a ter uma propriedade no form1, por exemplo ClientId: public int ClientId{ get {return Convert.ToInt32(txt_id.Text);} } no parâmetro terias: command.Parameters.Add("@ID", OleDbType.Integer).Value = frm1.ClientId;
D3POD Posted August 28, 2012 at 01:27 PM Author Report #473799 Posted August 28, 2012 at 01:27 PM (edited) E quando o Form1 é aberto, txt_id tem algum texto? neste caso form2... sim irá ter o valor do ID do cliente que será apresentada a informação... rumbafum o meu problema é que a textbox está no form1... e eu quero aceder à informação dele na form2. Edit1: Já consegui 😉 Fui no form 1 e criei o get para o valor da textbox e depois fui ao form2 e usei... como já tinha o código para o form2... bastou fr2.clientid 😉 Muito obrigado 😉 resumindo para aceder ao valores de outro form ou tools então tenho que o tornar publico ao projecto, pois por default é privado do form onde está... é isso? Em relação ao código com o que estou a fazer vou conseguir o que pretendo? Um abraço Edited August 28, 2012 at 01:41 PM by D3POD
rumbafum Posted August 28, 2012 at 02:09 PM Report #473804 Posted August 28, 2012 at 02:09 PM É isso mesmo. Quando adicionas a TextBox através do designer, por default a instância desse objecto é privada. Para acederes a dados de um form num outro form o melhor é expores propriedades do que queres aceder ou então por injecção de dependências através de construtor
D3POD Posted August 28, 2012 at 02:55 PM Author Report #473814 Posted August 28, 2012 at 02:55 PM Ainda não estou muito familiarizado com os contrutores... 😞 Mas funcionou isso é que importa... Mais uma vez, o meu muito obrigado 😉
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now