2013-02-26 2 views
-1

У меня есть форма под названием SelectCatagoryId, которая содержит DataGridView. Я хочу передать выбранный cellvalue отсюда в другую форму под названием Add_product.Не удается загрузить текстовое поле внутри конструктора

Это код внутри события кнопки в SelectcatagoryId.

private void dataGridView1_MouseClick(object sender, MouseEventArgs e) 
{ 
    String dgv; 
    dgv = dataGridView1.CurrentCell.Value.ToString(); 
    Add_product ap = new Add_product(dgv); 
    this.Close(); 
} 

Это код внутри Add_product формы

namespace Supermarket 
{ 
    public partial class Add_product : Form 
    { 

     public Add_product() 
     { 
      InitializeComponent(); 
     } 

     SqlConnection con; 
     string file; 

     public Add_product(String datagridvalue) 
     { 
      // MessageBox.Show(datagridvalue); 
      textBox10.Text = Convert.ToString(datagridvalue); 
     } 

MessageBox работает правильно, значение DGV в форме selectCatagoryId передается правильно сформировать Add_product, но я не могу присвоить значение переменной datagridvalue до textBox10.Text.

+0

почему вы преобразовать строку в строку? попробуйте textBox10.Text = datagridvalue; – VladL

+2

Какая у вас ошибка? –

+0

Правильно отформатируйте образцы исходного кода в будущих сообщениях. Оборванный левый отступ высказываний, которые должны быть на одном уровне отступов, может быть крайне запутанным. –

ответ

1

Перед назначением textBox вам нужно показать форму Add_product.

private void dataGridView1_MouseClick(object sender, MouseEventArgs e) 
{ 
    String dgv; 
    dgv = dataGridView1.CurrentCell.Value.ToString(); 
    Add_product ap = new Add_product(); 
    ap.Show(); 
    ap.SetProduct(dgv); 
    this.Close(); 
} 

...

добавить Также этот метод Add_product класса

public SetProduct(String datagridvalue) 
    { 
     // MessageBox.Show(datagridvalue); 
     textBox10.Text = datagridvalue; 
    } 
+0

thanx для ответа. bt nw здесь, отображая другую форму Add_product. предыдущая форма не работает по-прежнему. pls help .. :( –

+0

Итак, вместо создания новой формы: Add_product ap = new Add_product(), вам нужно открыть открытую форму. Его можно найти в коллекции Application.OpenForms). И после этого вам нужно вызвать метод SetProduct – alunyov

+0

да, я пытаюсь это сделать. bt как мне закрыть открытую форму Add_Product. Add_product ap = new Add_product(); ap.Close(); ap.Hide(); Методы ap.Dispose() не работают. PLS help –

1

Даже если вы создаете overload of constructor, вам необходимо указать InitializeComponent(), чтобы весь экземпляр элементов управления был создан.

public Add_product(String datagridvalue) 
{ 
    InitializeComponent(); 
    // MessageBox.Show(datagridvalue); 
    textBox10.Text = Convert.ToString(datagridvalue); 

} 

По умолчанию все UI Component инициируются внутри конструктора формы. И Visual Studio генерирует всю инициализацию в методе InitializeComponent().

+0

Моя форма «Добавить_продукт» загружается другим событием кнопки. поэтому я не могу следовать этому методу. пожалуйста, дайте мне решение .... –

+0

@KasunMadhupaUdawaththa - посмотрите на мой код, у вас есть вызов 'InitializeComponent();' перед вызовом 'textBox10.Text = Convert.ToString (datagridvalue);' –

+0

@KasunMadhupaUdawaththa - вам не нужно измените способ отображения формы. –

Смежные вопросы