Trabalhando com Arraylist na memoria , sem Banco de Dados
Eae pessoal , olha eu aque denovo , boa tarde...
Intão pessoal , estou com um probleminha aqui , eu tenho uma listbox com varios itens , eu clico em um item e clico no botao editar , o código que esta no botao editar é esse:
[/code]
private void bntEditar_Click(object sender, EventArgs e)
{
frmItemVenda Aplic = new frmItemVenda(listBox1);
listBox1.Items[listBox1.SelectedIndex] = (Aplic.ShowDialog()).ToString();
}
Intão pessoal , estou com um probleminha aqui , eu tenho uma listbox com varios itens , eu clico em um item e clico no botao editar , o código que esta no botao editar é esse:
[/code]
private void bntEditar_Click(object sender, EventArgs e)
{
frmItemVenda Aplic = new frmItemVenda(listBox1);
listBox1.Items[listBox1.SelectedIndex] = (Aplic.ShowDialog()).ToString();
}
eu estou chamando outro form ai , ou seja estou chamando o mesmo form que inclui itens , ele edita certinho e tudo ,porem.. , eu edito um item com valor de 100 reais e passo ele pra 50 reais , no meu valor total ele nao esta subtraindo , ele ta somando , ai fica 150 , alguem sabe oq tenho que fazer ?? , e tambem tem uma outra coisinha , e se na hora que eu aperta o botao editar , ele me abre o msm form de adicionar como eu disse acima , so que em vez de abrir vazio , ele abre com os dados do item que eu selecionei , tem como fazer ? plz da uma ajudinha ai , Abraço a todos ae vlw .. PS:Estou trabalhando com esse o listbox apenas na memoria
Tiagux
Curtidas 0
Respostas
Codename.v
01/10/2008
Olá! Pelo que entendi você possui uma variável ´total´ que guarda a soma do valor de todos os itens do controle ListBox, certo?
Então quando você modifica o valor de um dos itens o valor total não subtrai, certo?
O correto seria você postar o código que mostra a maneira como você está preenchendo a sua variável ´total´ para que o pessoal pudesse analisar o problema. Fica a dica! :D
Vamos ver se consigo te ajudar com isso mesmo assim.
Para a primeira dúvida o que você deve fazer é criar um método que zere a sua variável ´total´ e realize novamente a somatória de todos os itens do controle ListBox sempre que necessário.
Então no seu código ficaria assim:
Acho que isso deve te ajudar.
Sua segunda dúvida é sobre transporte de dados entre formulários, certo?
Você pode criar umas variáveis publicas no seu ´frmItemVenda´ e acessá-las antes da chamada do método ShowDialog().
Vamos supor que você possua as váriaveis publicas ´codigo´ e ´nome´ no seu ´frmItemVenda´.
Então você faria o seguinte:
Então você pode criar um método que utilize essas variáveis para preencher os TextBox ou o que seja e chamá-lo no método load do seu ´frmItemVenda´.
Abraços! \o/
Então quando você modifica o valor de um dos itens o valor total não subtrai, certo?
O correto seria você postar o código que mostra a maneira como você está preenchendo a sua variável ´total´ para que o pessoal pudesse analisar o problema. Fica a dica! :D
Vamos ver se consigo te ajudar com isso mesmo assim.
Para a primeira dúvida o que você deve fazer é criar um método que zere a sua variável ´total´ e realize novamente a somatória de todos os itens do controle ListBox sempre que necessário.
private void SomaValores()
{
/*
Aqui a sua variável "total" é zerada para que não haja erro
ao somar todos os valores novamente.
*/
valorTotal = 0;
/*
Agora basta usar um comando foreach com uma string para
percorrer os itens do controle ListBox e soma-los à variável
"total".
*/
foreach (string item in listBoxItens.Items)
{
valorTotal += Convert.ToDouble(item);
}
}
Então no seu código ficaria assim:
private void bntEditar_Click(object sender, EventArgs e)
{
frmItemVenda Aplic = new frmItemVenda(listBox1);
listBox1.Items[listBox1.SelectedIndex] = (Aplic.ShowDialog()).ToString();
this.SomaValores();
}
Acho que isso deve te ajudar.
Sua segunda dúvida é sobre transporte de dados entre formulários, certo?
Você pode criar umas variáveis publicas no seu ´frmItemVenda´ e acessá-las antes da chamada do método ShowDialog().
Vamos supor que você possua as váriaveis publicas ´codigo´ e ´nome´ no seu ´frmItemVenda´.
Então você faria o seguinte:
private void bntEditar_Click(object sender, EventArgs e)
{
frmItemVenda Aplic = new frmItemVenda(listBox1);
Aplic.codigo = "valor a ser acessado no outro form";
Aplic.nome = "valor a ser acessado no outro form";
listBox1.Items[listBox1.SelectedIndex] = (Aplic.ShowDialog()).ToString();
}
Então você pode criar um método que utilize essas variáveis para preencher os TextBox ou o que seja e chamá-lo no método load do seu ´frmItemVenda´.
Abraços! \o/
GOSTEI 0
Tiagux
01/10/2008
Ola , bom vlw pela dica , mais eu acabei desistindo de fazer com listBox , hehe , eu fiz com listview , pq tipo achei mais simples , olha um exemplo de como eu viz com listView ...
Esse códico eu adicionei no botao editar , bom resolveu meu problema ,tomara que seje util para mais pessoas , bom até a proxima vlw.
Abraços,
Tiago Gomes
private void bntEditar_Click(object sender, EventArgs e)
{ string message = "Voce deseja editar esse item?";
string capition = "Edição de Item";
MessageBoxButtons buttons = MessageBoxButtons.YesNo;
DialogResult result;
result = MessageBox.Show(this, message, capition, buttons,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button1,
MessageBoxOptions.RightAlign);
//Se o usuario clicar em Sim , entao entra no if.
if (result == DialogResult.Yes)
{
if (listView1.SelectedItems[0].Selected)
{
frmItemVenda f = new frmItemVenda(listView1, lblValor_Iten2, lblValorToT_2, lblValorToT_Azul2, lblValorToT_Verm2);
f.txtProduto_ItemVenda.Text = listView1.FocusedItem.SubItems[0].Text = Aplic.ShowDialog().ToString();
ListView.SelectedIndexCollection indexes =
this.listView1.SelectedIndices;
double price = 0; double segundovalor = 0;
foreach (int index in indexes)
{
price += double.Parse(this.listView1.Items[index].SubItems[1].Text) * double.Parse(this.listView1.Items[index].SubItems[2].Text);
segundovalor += int.Parse(lblValorToT_Verm2.Text) - price;
}
lblValorToT_Verm2.Text = segundovalor.ToString();
lblValorToT_2.Text = segundovalor.ToString();
lblValorToT_Azul2.Text = segundovalor.ToString();
lblValor_Iten2.Text = segundovalor.ToString();
}
Esse códico eu adicionei no botao editar , bom resolveu meu problema ,tomara que seje util para mais pessoas , bom até a proxima vlw.
Abraços,
Tiago Gomes
GOSTEI 0
Codename.v
01/10/2008
Uma boa coisa a se fazer também é você criar classes para transporte de dados contendo atributos e propriedades. Por exemplo:
E utilizalas em conjunto com o Generec List<>. Por exemplo:
O List<> quebra um galhão!!
Abraços!
public class Produtos
{
private int _prodCodigo;
private string _prodNome;
private double _prodValor;
public ProdCodigo
{
get { return _prodCodigo; }
set { _prodCodigo = value; }
}
public ProdNome
{
get { return _prodNome; }
set { _prodNome = value; }
}
public ProdValor
{
get { return _prodValor; }
set { _prodValor = value; }
}
}
E utilizalas em conjunto com o Generec List<>. Por exemplo:
List<Produtos> listaProdutos = new List<Produtos>(); Produtos pdts = new Produtos(); pdts.ProdCodigo = Convert.ToInt32(txtCodigo.Text); pdts.ProdNome = txtNome.Text; pdts.ProdValor = Convert.ToDouble(txtValor.Text); listaProdutos.Add(pdts);
O List<> quebra um galhão!!
Abraços!
GOSTEI 0