D3POD Posted August 28, 2012 at 03:56 PM Report Share #473825 Posted August 28, 2012 at 03:56 PM Boa tarde, mais uma dúvida que deve ser bem básica, mas que mais uma vez utilizava no VB.NET e que em C# não sei como fazer... Em certas situações, quando apenas quero gravar um valor de uma textbox para utilizar num form seguinte costumo usar o My.Settings. Acontece que não encontro forma de o fazer em C#... alguém me consegue ajudar? Cumprimentos Link to comment Share on other sites More sharing options...
rumbafum Posted August 28, 2012 at 04:09 PM Report Share #473827 Posted August 28, 2012 at 04:09 PM Penso que o equivalente será: Properties.Settings.Default. Aqui não te garanto com certeza. O melhor é pesquisares por isso Link to comment Share on other sites More sharing options...
petvetbr Posted August 28, 2012 at 04:15 PM Report Share #473828 Posted August 28, 2012 at 04:15 PM Pode usar uma classe static também para fazer isto: public static class Mensagem { public static string Conteudo; } aí vc coloca: Mensagem.Conteudo="texto"; e na outra form, você pega var texto=Mensagem.Conteudo Fernando Lage Bastos - MCP/MCTS/MCPD Link to comment Share on other sites More sharing options...
renafi Posted August 28, 2012 at 05:04 PM Report Share #473838 Posted August 28, 2012 at 05:04 PM Concordo com o petvetbr. Acho melhor enviar as coisas desta forma. Oracle Certified Professional - AdministraçãoOracle Certified Professional - Pl/sqlMCPD - Microsoft Certified Professional DeveloperMCTS - Microsoft Certified Technology Specialist Link to comment Share on other sites More sharing options...
D3POD Posted August 28, 2012 at 05:14 PM Author Report Share #473839 Posted August 28, 2012 at 05:14 PM Obrigado pelas respostas 😉 Realmente o Properties.Settings existe, mas como não encontro nada sobre ele fui para as classes 😉 Agora tenho uma dúvida... Criei a classe e o contrutor... public static class classeid { public static int id; } depois fui no botão e coloquei: classeid.id = Int32.Parse(txt_id.Text); Até aqui tudo bem... agora, preciso de os ir buscar no outro form... O que eu queria era o clicar no botão ele executava a classeid.id e depois abria o form. Agora o form ao ser iniciado colocava logo o valor da txt_id logo na txt_id do form que acabou de ser aberto... mas não sei agora como por o seguinte código: textid.text = classeid.id; porque se colocar no form3_load o metodo é privado... diz que o classeid não existe no contexto actual... como posso declara-la de forma a ser acessivel? Espero que consigam perceber esta confusão toda 😉 Muito obrigado 😉 Link to comment Share on other sites More sharing options...
petvetbr Posted August 28, 2012 at 06:05 PM Report Share #473851 Posted August 28, 2012 at 06:05 PM Veja se você está referenciando o Namespace onde a classe classeid está declarada. Pois embora o método seja privado, isto não o impede de trabalhar com variáveis publicas, esta classeid deveria ser acessível a qualquer método em qualquer form, desde que o namespace esteja declarado na seção dos "using", ou vc acesse ela diretamente usando NomeDoNamespace.classeid. Fernando Lage Bastos - MCP/MCTS/MCPD Link to comment Share on other sites More sharing options...
D3POD Posted August 28, 2012 at 06:24 PM Author Report Share #473863 Posted August 28, 2012 at 06:24 PM Este é o código que tenho: 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; using System.Data.OleDb; namespace Gclient { public partial class Form3 : Form { public Form3() { InitializeComponent(); } Form1 fr1 = new Form1(); private void btn_alterar_Click(object sender, EventArgs e) { 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 = fr1.clientid ; command.Parameters.Add("@Nome", OleDbType.VarChar).Value = txt_nome.Text; command.Parameters.Add("@telefone", OleDbType.Integer).Value = Int32.Parse(txt_telf.Text); command.Parameters.Add("@telemovel", OleDbType.Integer).Value = Int32.Parse(txt_tele.Text); command.Parameters.Add("@morada", OleDbType.VarChar).Value = txt_morada.Text; command.Parameters.Add("@contribuinte", OleDbType.Integer).Value = Int32.Parse(txt_cont.Text); command.Parameters.Add("@email", OleDbType.VarChar).Value = txt_email.Text; command.Parameters.Add("@licenca", OleDbType.VarChar).Value = txt_serie.Text; command.Parameters.Add("@activacao", OleDbType.VarChar).Value = txt_activacao.Text; conn.Open(); int x = command.ExecuteNonQuery(); if (x < 1) { MessageBox.Show("Erro ao Actualizar", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show ("Actualizado com sucesso", "Actualização", MessageBoxButtons.OK,MessageBoxIcon.Information); } conn.Close(); command = null; } private void Form3_Load(object sender, EventArgs e) { txt_id.Text = fr1.classeid.id; } private void txt_id_TextChanged(object sender, EventArgs e) { } } } Coloquei o código que está a dar erro a font-size 18... Onde estou a errar? :S Link to comment Share on other sites More sharing options...
petvetbr Posted August 28, 2012 at 06:26 PM Report Share #473864 Posted August 28, 2012 at 06:26 PM Neste código nada. O que precisamos saber para te ajudar é o código da classe static que foi criado, cole aqui o código completo onde você a declara. Fernando Lage Bastos - MCP/MCTS/MCPD Link to comment Share on other sites More sharing options...
D3POD Posted August 28, 2012 at 06:40 PM Author Report Share #473867 Posted August 28, 2012 at 06:40 PM Peço desculpa colocar o código todo, mas poderá ajudar para entenderem o que pretendo 🙂 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; using System.Data.OleDb; namespace Gclient { public partial class Form1 : Form { public int clientid { get { return Convert.ToInt32(txt_id.Text); } } public static class classeid { public static int id; } public Form1() { InitializeComponent(); } private void btn_novo_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show(); this.Hide(); } private void Form1_Load(object sender, EventArgs e) { // Conexão à BD string conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Clientes.accdb;Persist Security Info=False"; OleDbConnection con = new OleDbConnection(conn); OleDbCommand cmd = new OleDbCommand("SELECT * FROM Clientes", con); // Comando para a BD con.Open(); cmd.CommandType = CommandType.Text; OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); DataTable clientes = new DataTable(); adapter.Fill(clientes); dgv.DataSource = clientes; DataGridViewColumn column8 = dgv.Columns[8]; column8.Width = 280; DataGridViewColumn column0 = dgv.Columns[0]; column0.Width = 40; DataGridViewColumn column1 = dgv.Columns[1]; column1.Width = 180; DataGridViewColumn column2 = dgv.Columns[2]; column2.Width = 70; DataGridViewColumn column3 = dgv.Columns[3]; column3.Width = 70; DataGridViewColumn column4= dgv.Columns[4]; column4.Width = 270; DataGridViewColumn column5 = dgv.Columns[5]; column5.Width = 70; DataGridViewColumn column6 = dgv.Columns[6]; column6.Width = 150; DataGridViewColumn column7 = dgv.Columns[7]; column7.Width = 210; } private void btn_excluir_Click(object sender, EventArgs e) { pl_alterar.Visible = true; } private void préVisualizarToolStripMenuItem_Click(object sender, EventArgs e) { } private void btn_excluir_Click_1(object sender, EventArgs e) { } private void lb_ID_Click(object sender, EventArgs e) { } private void btn_plsair_Click(object sender, EventArgs e) { } private void btn_plaltera_Click(object sender, EventArgs e) { Form1 fr1 = new Form1(); if ( txt_id.Text != "") { classeid.id = Int32.Parse(txt_id.Text); Form3 fr3 = new Form3(); fr3.Show(); pl_alterar.Visible = false; fr1.Hide(); } else { MessageBox.Show("Por favor introduza um valor para o ID do cliente que deseja alterar!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } } Um abraço e muito obrigado 🙂 Link to comment Share on other sites More sharing options...
petvetbr Posted August 28, 2012 at 06:55 PM Report Share #473870 Posted August 28, 2012 at 06:55 PM Desculpe na verdade havia um erro na postagem anterior que não percebi, mas agora com este código ficou mais fácil de localizar. Você não precisa/deve colocar fr1. antes da classe static: txt_id.Text = fr1.classeid.id; deveria ser: txt_id.Text = classeid.id; pois uma classe static é independente de outras, você referencia ela diretamente pelo nome dela. Fernando Lage Bastos - MCP/MCTS/MCPD Link to comment Share on other sites More sharing options...
D3POD Posted August 28, 2012 at 07:36 PM Author Report Share #473881 Posted August 28, 2012 at 07:36 PM Isso foi eu a experimentar a ver se dava, porque tirando o fr1 ele continua a dar o erro que não está no contexto actual :S Link to comment Share on other sites More sharing options...
petvetbr Posted August 28, 2012 at 08:10 PM Report Share #473892 Posted August 28, 2012 at 08:10 PM (edited) declare a classe estática fora da classe do Form1 de preferência em um outro arquivo apertando Add new class no seu projeto ao clicá-lo com o botão direito do mouse. Edited August 28, 2012 at 08:10 PM by petvetbr Fernando Lage Bastos - MCP/MCTS/MCPD Link to comment Share on other sites More sharing options...
D3POD Posted August 28, 2012 at 08:53 PM Author Report Share #473897 Posted August 28, 2012 at 08:53 PM Não percebi amigo, desculpa lá sou ainda muito novato nisto. Adiciono uma classe ao projecto? Se sim, como a chamo? Link to comment Share on other sites More sharing options...
petvetbr Posted August 28, 2012 at 09:37 PM Report Share #473905 Posted August 28, 2012 at 09:37 PM (edited) sim, isto mesmo. Retire a declaração da classeid de dentro da form1, adicione uma nova classe dê o nome de "classid", sobreescreva a declaração da classe que foi criada com o que já foi feito dentro do form para dentro do arquivo criado: public static class classeid { public static int id; } Agora deve funcionar em qualquer form. Edited August 28, 2012 at 09:37 PM by petvetbr Fernando Lage Bastos - MCP/MCTS/MCPD Link to comment Share on other sites More sharing options...
D3POD Posted August 28, 2012 at 10:42 PM Author Report Share #473914 Posted August 28, 2012 at 10:42 PM Muito obrigado amigo, funcionou na perfeição e aprendi a funcionar com as classes eheheh muito basicamente, mas já é qualquer coisa. O meu muito obrigado. Um abraço 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