Post the code you used and point out which "other" ArrayList is being incorrectly changed.
THE BOLD CONTENT IS THE ARRAY WHICH I AM PASSING......
private void renameVariableToolStripMenuItem_Click(object sender, EventArgs e)
{
//MessageBox.Show("" + m_CaseData.CaseVars.Count);
//from here cal to the form with required params....
oFormVariabelProperties = new frmVarProperties(
m_CaseData.CaseVars,(int)m_GridControl.CurrentCell.Col-1);
if (oFormVariabelProperties.ShowDialog() == DialogResult.OK)
{
if (oFormVariabelProperties.flag == true)
{
//m_CaseData.RenameVariable(m_GridControl.CurrentCel l.Col-1,)
}
//set value to engine
else if (oFormVariabelProperties.flag == false)
oFormVariabelProperties.ShowDialog();
}
}
SECOND FORM IS: HERE TEMPCASEVARS IS AN ARRAY IN WHICH M DOING THE CHANGE N THIS CHANGES R GETTING REFLECTED IN THE TCASEVARS...
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using CaseDataLib;
using System.Collections;
namespace CaseEditor
{
public partial class frmVarProperties : Form
{
const int Zero=0;
CaseVariable objCaseVariable;
public Boolean flag = false;
public Boolean Nextflag = false;
public Boolean Prevflag = false;
public Boolean leaveflag = false;
int index;
private ArrayList TempCaseVars;
private ArrayList TCaseVars;
//private String[] Description;
public frmVarProperties(ArrayList CaseVars, int lColIndex)
{
long j = 0;
//CaseVariable obj;
InitializeComponent();
TempCaseVars = new ArrayList(CaseVars);
TCaseVars = new ArrayList();
TCaseVars = CaseVars;
//TCaseVars = (ArrayList)CaseVars.Clone();
//TCaseVars = CaseVars;
//Description = new string[TempCaseVars.Count];
//TempCaseVars = CaseVars;
objCaseVariable = (CaseVariable)TempCaseVars[(int)lColIndex];
txtBoxVariableDetailName.Text = objCaseVariable.VariableName;
txtBoxVariableDetailDescription.Text = objCaseVariable.Description;
cbBoxVariableDetailType.Text = cbBoxVariableDetailType.Items[(int)objCaseVariable.VariableType].ToString();
// this is for addind all the existing var in the list
for (int i = 0; i < TempCaseVars.Count; i++)
{
objCaseVariable = (CaseVariable)TempCaseVars[i];
lstVariableList.Items.Add(objCaseVariable.Variable Name);
}
//this is for highlighting the renamed variable
for (int i = 0; i < TempCaseVars.Count; i++)
{
if (lstVariableList.Items[i].ToString() == txtBoxVariableDetailName.Text)
{
lstVariableList.SetSelected(i, true);
}
}
if (lColIndex+1==lstVariableList.Items.Count)
{
btnVariableDetailNext.Enabled = false;
}
if (lColIndex == Zero)
{
btnVariableDetailPrevious.Enabled = false;
}
if(lstVariableList.Items.Count==1)
{
btnVariableDetailNext.Enabled = false;
btnVariableDetailPrevious.Enabled = false;
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
btnVariableDetailRestore.Enabled = true;
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
btnVariableDetailRestore.Enabled = true;
}
private void Prev_Next_Click()
{
btnVariableDetailRestore.Enabled = true;
objCaseVariable = (CaseVariable)TempCaseVars[lstVariableList.SelectedIndex];
if (txtBoxVariableDetailName.Text != lstVariableList.SelectedItem.ToString())
objCaseVariable.VariableName = txtBoxVariableDetailName.Text;
if (txtBoxVariableDetailName.Text != lstVariableList.SelectedItem.ToString())
{
if (txtBoxVariableDetailDescription.Text != objCaseVariable.Description)
objCaseVariable.Description = txtBoxVariableDetailDescription.Text;
index = lstVariableList.SelectedIndex;
lstVariableList.Items.RemoveAt(index);
lstVariableList.Items.Insert(index, txtBoxVariableDetailName.Text);
lstVariableList.SelectedIndex = index;
}
else
if (txtBoxVariableDetailName.Text == lstVariableList.SelectedItem.ToString())
{
if (txtBoxVariableDetailDescription.Text != objCaseVariable.Description)
{
MessageBox.Show("Duplicate Variable");
if (Nextflag == true)
lstVariableList.SetSelected(lstVariableList.Select edIndex + 1, true);
else
lstVariableList.SetSelected(lstVariableList.Select edIndex - 1, true);
Nextflag = false;
Prevflag = false;
if (lstVariableList.SelectedIndex == Zero)
btnVariableDetailPrevious.Enabled = false;
//Temp[lstVariableList.SelectedIndex] = objCaseVariable.Description;
//break;
}
}
if (Nextflag == true)
{
if (lstVariableList.SelectedIndex == Zero)
btnVariableDetailPrevious.Enabled = false;
else
btnVariableDetailNext.Enabled = true;
for (; lstVariableList.SelectedIndex < lstVariableList.Items.Count; )
{
lstVariableList.SelectedIndex = lstVariableList.SelectedIndex + 1;
if (lstVariableList.SelectedIndex + 1 == lstVariableList.Items.Count)
{
btnVariableDetailNext.Enabled = false;
}
lstVariableList.SetSelected(lstVariableList.Select edIndex, true);
txtBoxVariableDetailName.Text = lstVariableList.Items[lstVariableList.SelectedIndex].ToString();
objCaseVariable = (CaseVariable)TempCaseVars[lstVariableList.SelectedIndex];
break;
}
Nextflag = false;
}
else
if (Prevflag == true)
{
if (lstVariableList.SelectedIndex != lstVariableList.Items.Count - 1)
{
btnVariableDetailNext.Enabled = true;
}
for (; lstVariableList.SelectedIndex >= Zero; ) //only till the first item
{
lstVariableList.SetSelected(lstVariableList.Select edIndex - 1, true);
txtBoxVariableDetailName.Text = lstVariableList.SelectedItem.ToString();
objCaseVariable = (CaseVariable)TempCaseVars[lstVariableList.SelectedIndex];
cbBoxVariableDetailType.Text = cbBoxVariableDetailType.Items[(int)objCaseVariable.VariableType].ToString();
txtBoxVariableDetailDescription.Text = objCaseVariable.Description;
if (lstVariableList.SelectedIndex <= Zero)
{
btnVariableDetailPrevious.Enabled = false;
}
break;
}
Prevflag = false;
}
}
private void btnVariableDetailNext_Click(object sender, EventArgs e)
{
Nextflag = true;
Prev_Next_Click();
}
private void btnVariableDetailPrevious_Click(object sender, EventArgs e)
{
Prevflag = true;
Prev_Next_Click();
}
private void lstVariableList_SelectedIndexChanged(object sender, EventArgs e)
{
btnVariableDetailRestore.Enabled = true;
if (lstVariableList.Items.Count != 1) //should not go inside when there is only 1 item
{
if (lstVariableList.SelectedIndex == lstVariableList.Items.Count - 1)
{
btnVariableDetailNext.Enabled = false;
btnVariableDetailPrevious.Enabled = true;
}
if (lstVariableList.SelectedIndex == Zero)
{
btnVariableDetailPrevious.Enabled = false;
btnVariableDetailNext.Enabled = true;
}
if (lstVariableList.SelectedIndex >= 1)
btnVariableDetailPrevious.Enabled = true;
if (lstVariableList.SelectedIndex < lstVariableList.Items.Count - 1)
btnVariableDetailNext.Enabled = true;
}
if (lstVariableList.SelectedIndex >= Zero)
// because when the contol comes after changing the textbox data selected index is becoming as -1
{
objCaseVariable = (CaseVariable)TempCaseVars[lstVariableList.SelectedIndex];
txtBoxVariableDetailName.Text = lstVariableList.Items[lstVariableList.SelectedIndex].ToString();
cbBoxVariableDetailType.Text = cbBoxVariableDetailType.Items[(int)objCaseVariable.VariableType].ToString();
txtBoxVariableDetailDescription.Text = objCaseVariable.Description;
}
}
private void btnVariableDetailRestore_Click(object sender, EventArgs e)
{
lstVariableList.Items.Clear();
for (int i = 0; i < TempCaseVars.Count; i++)
{
objCaseVariable = (CaseVariable)TCaseVars[i];
lstVariableList.Items.Add(objCaseVariable.Variable Name);
}
lstVariableList.SetSelected(Zero, true);
txtBoxVariableDetailName.Text = lstVariableList.Items[0].ToString();
}
private void frmVarProperties_Load(object sender, EventArgs e)
{
btnVariableDetailRestore.Enabled = false;
}
private void txtBoxVariableDetailName_TextChanged(object sender, EventArgs e)
{
btnVariableDetailRestore.Enabled = true;
}
private void txtBoxVariableDetailDescription_TextChanged(object sender, EventArgs e)
{
btnVariableDetailRestore.Enabled = true;
}
private void btnVariableDetailOK_Click(object sender, EventArgs e)
{
if (txtBoxVariableDetailName.Text =="")
{
MessageBox.Show("Enter Value");
txtBoxVariableDetailName.Focus();
flag = false;
return;
}
else
flag = true;
}
}
}