Jump to content

C# My.Settings


D3POD

Recommended Posts

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

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

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

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

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

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

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 by petvetbr

Fernando Lage Bastos - MCP/MCTS/MCPD

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.