У меня есть две формы. Форма 5 и Форма 6. В Form5 есть публичный c метод SelectedEvent (). Когда я создаю переменную объекта Form5, она не возвращает правильное значение. Когда я вызываю метод из другого метода Form5 (того же класса), он работает. Теперь еще одна проводная вещь - когда я назначил значение c, которое будет возвращено внутри этого метода, его можно получить из формы Form6! Коды объяснят больше, я надеюсь -
(я пишу только необходимые компоненты из всего проекта.)
public partial class Form5 : Form
{
`\\there are many other methods too`
SqlConnection con = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=FinalLabDairy;Integrated Security=True");
int x;
public Form5()
{
InitializeComponent();
}
public int SelectedEvent()
{
return this.x;
}
`\\the method where i assigned the value of 'x':`
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
this.x = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells["EID"].Value.ToString());
}
`\\I'm sure the value has been assigned correctly because it works in the method below:`
private void button4_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand(@"DELETE FROM [dbo].[Events] WHERE EID='"+SelectedEvent()+"'", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
int x = dataGridView1.SelectedRows[0].Index;
dataGridView1.Rows.RemoveAt(x);
}
}
Теперь в классе Form6 -
public partial class Form6 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form5 f = new Form5();
SqlCommand cmd = new SqlCommand(@"UPDATE [dbo].[Events] SET [Date] = '" + dateTimePicker1.Text + "',[Time] = '" + dateTimePicker2.Text + "',[Title] = '" + txttitle.Text + "',[Description] = '" + txtdesc.Text + "',[Priority] = '" + comboBox1.Text + "',[LastMod] = '" + dateTimePicker1.Text + "'WHERE EID='"+ f.SelectedEvent() +"'", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
`\\i put this MessageBox just to see if the value of 'x' coming through correctly`
MessageBox.Show(f.SelectedEvent().ToString());
}
}
И теперь, к сожалению, f.SelectedEvent () не возвращает правильное значение. Вместо этого он возвращает '0'.
Забавно, когда я изменял возвращаемое значение в методе SelectedEvent (), как показано ниже -
public int SelectedEvent()
{
this.x = 1001;
return this.x;
}
Это работает как шарм. Я имею в виду значение 1001 возвращается внутри Form6, где вызывается f.SelectedEvent ()! Таким образом, похоже, что проблема возникает только тогда, когда метод вызывается из другой формы и значение x присваивается вне метода!
Я не знаю, почему он не возвращает назначенное значение x вместо 0! Кроме того, как он может возвращать указанное значение, назначенное в методе, но возвращая 0, если оно назначено из другого метода? Примечание. При назначении из другого метода он работает в той же форме, поэтому мы можем разобраться, что х не назначается должным образом. Также я попытался сделать 'x' и метод, используемый для присвоения 'Publi c', который тоже не работает.