D3POD Posted August 27, 2012 at 07:17 PM Report Share #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 😉 Link to comment Share on other sites More sharing options...
Rechousa Posted August 27, 2012 at 09:48 PM Report Share #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 Link to comment Share on other sites More sharing options...
D3POD Posted August 27, 2012 at 10:17 PM Author Report Share #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 Link to comment Share on other sites More sharing options...
Gonka Posted August 28, 2012 at 10:08 AM Report Share #473769 Posted August 28, 2012 at 10:08 AM E quando o Form1 é aberto, txt_id tem algum texto? Link to comment Share on other sites More sharing options...
rumbafum Posted August 28, 2012 at 01:09 PM Report Share #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; Link to comment Share on other sites More sharing options...
D3POD Posted August 28, 2012 at 01:27 PM Author Report Share #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 Link to comment Share on other sites More sharing options...
rumbafum Posted August 28, 2012 at 02:09 PM Report Share #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 Link to comment Share on other sites More sharing options...
D3POD Posted August 28, 2012 at 02:55 PM Author Report Share #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 😉 Link to comment Share on other sites More sharing options...
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