powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как сделать перменные видными
10 сообщений из 35, страница 2 из 2
Как сделать перменные видными
    #32375969
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, а вот что бывает с теми кто не слушал Голуба \r
\r
/topic/68553
...
Рейтинг: 0 / 0
Как сделать перменные видными
    #32378356
sadsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
funikovyuri

Кстати так тоже не получается


а вот так

Form1 f = new Form1();

f.sqlDataAdapter1.fill(f.dataSet31);

вроде не ругается но и ничего не обновляет
...
Рейтинг: 0 / 0
Как сделать перменные видными
    #32378522
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuriно я не профессионал

судя по вашим постам я бы так не сказал :)
а какой у вас критерий профессионализма?
мне когда-то понравилось определение - "профессионал (имеется ввиду в чём-то) - тот, кто зарабатывает себе на жизнь своей профессией".

хотя в последнее время смысл этого слово сместился в сторону "высококлассный специалист", так же, как термина "хакер" - в сторону "электронный пират".
...
Рейтинг: 0 / 0
Как сделать перменные видными
    #32379611
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 sadsaf
Ты не описал свою задачу по идее при правильной организации проекта подобных проблем не должно возникать.

Могу предположить что в форме 2 находятся данные которые необходимо закинуть в базу данных.
Например есть форма 1 там datagrid на чтение, нажимаем кнопку изменить и в форме2 меняем данные, в форме2 нажимаек ОК изменения попадают в БД.

ИМХО тогда я бы :
1) На форме2 переменные не стал бы объявлять как public а обращался бы к ним через свойства
2) Открывал бы форму как модальный диалог а при закрытии делал бы что хотел с данными этой формы

Код обработчика кнопки "изменить" формы1
Пишу на VB.NET
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim f as Form = New Form2()
' Инициализация значений
f.Свойство1  = Значение
f.Свойство2 = значение 
Dim result as integer
' Открываем диалог
result = f.ShowDialog(Me)
if result = System.Windows.Forms.DialogResult.OK then
' Если диалог закрыли ОКем то 
  f.sqlDataAdapter1.fill(f.dataSet31)
  ' Считать новые значения 
  Me.m_newvalue1 = f.Свойство1
  Me.m_newvalue2 = f.Свойство2 
endif 


Не пинайте за VB.NET главное показать идею
...
Рейтинг: 0 / 0
Как сделать перменные видными
    #32382071
sadsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мысль то верная тока как енто все написать на шарпе?

И мне нужно что бы данные (при закрытии форм1) сразу же отражались в гриде в форме2.
...
Рейтинг: 0 / 0
Как сделать перменные видными
    #32382994
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hDrummer

судя по вашим постам я бы так не сказал :)
Спасибо

профессионал (имеется ввиду в чём-то) - тот, кто зарабатывает себе на жизнь своей профессией

Если именно профессией - а то много как зарабатывают - у людей мимикрия развита неплохо :)
...
Рейтинг: 0 / 0
Как сделать перменные видными
    #32383965
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Мысль то верная тока как енто все написать на шарпе?
И мне нужно что бы данные (при закрытии форм1) сразу же отражались в гриде в форме2.


Напиши поподробнее свою задачу , примерные данные, использованную СУБД в частности (запросы или хранимые процедуры), как выглядит форма 1 (какие данные, элементы управления используются) как выглядит форма 2 (анологично), судя по предыдущим постам картина четко не вырисовывается. Тогда можно что-нибудь и по конкретнее посоветовать.

За что люблю .NET есть множество решений одной и той же задачи.
...
Рейтинг: 0 / 0
Как сделать перменные видными
    #32384134
sadsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В форм 1 есть грид с записями.

При добавлении новой записи открывается форм 2 с текстБоксами
При нажатии кнопки Добавить(кнопка находится в форм 2) данные должны попасть в базу данных(с ентим проблем не существует ) , а при нажатии кнопки EXIT форм2 должна закрыться, а данные должны сразу появится в гриде в форм 1.


//Form1


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace transport_7._03sl
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
public System.Windows.Forms.DataGrid dataGrid1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
public System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
public System.Data.SqlClient.SqlConnection sqlConnection1;
public transport_7._03sl.DataSet3 dataSet31;





//Добавление новой записи

private void button1_Click(object sender, System.EventArgs e)
{


Form2 f = new Form2();
f.Show();
}



//Form2

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace transport_7._03sl
{
/// <summary>
/// Summary description for Form2.
/// </summary>
public class Form2 : System.Windows.Forms.Form
{
private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
private System.Data.SqlClient.SqlConnection sqlConnection1;



//Кнопка сохранения записи


private void button2_Click(object sender, System.EventArgs e)
{
int k = dataGrid1.CurrentRowIndex.GetHashCode();

string filter = "id='" +
dataGrid1.CurrentRowIndex.ToString() + "'";

DataRow[] full = dataSet30111.full.Select(filter);
dataSet30111.full[k].BeginEdit();
dataSet30111.full[k]["Отправитель"] = textBox1.Text;
dataSet30111.full[k]["Груз"] = textBox2.Text;
dataSet30111.full[k]["Тип машины"] = textBox3.Text;



dataSet30111.full[k].EndEdit();
sqlDataAdapter2.Update(dataSet30111);
}



А вот тута начинается самое интересное
//Кнопка закрытия форм 2


private void button3_Click(object sender, System.EventArgs e)
{
frachtForm f1 = new frachtForm();

f1.sqlDataAdapter1.Fill(f1.dataSet31);



this.Close();
}
...
Рейтинг: 0 / 0
Как сделать перменные видными
    #32385602
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В форм 1 есть грид с записями.
При добавлении новой записи открывается форм 2 с текстБоксами
При нажатии кнопки Добавить(кнопка находится в форм 2) данные должны попасть в базу данных(с ентим проблем не существует ) , а при нажатии кнопки EXIT форм2 должна закрыться, а данные должны сразу появится в гриде в форм 1.


Если тебе не критично то пусть форма 2 будет модальной. С одной стороны это удобно так как навязывают пользователю отработать этот диалог. А не переключиться на другой оставив этот открытым.

Если форма 2 будет модальной то решение может быть следующим.
Во первых DataSet отвязанный источник данных поэтому совершенно не обязательно сразу же скидывать значения. в базу данных. Я бы в форме 2 работал только с dataset, про БД можно забыть. И также на форме2 помести две кнопки. ОК и CANCEL - у одной поставил DialogResult = OK у другой CANCEL.
В случае если пользователь понял что накосячил он нажимает на СANCEL в БД ничего не заносится.
В случае если все ОК пользователь нажимает кнопку ОК и только тогда я обновляю БД. данными из DATASET. При этом физически эта процедура находится не в форме2 а в форме 1.

Например, так.
Эта процедура вызываемая по нажатию кнопки ДОБАВИТЬ (Форма1 ):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
		private void btnAdd_Click(object sender, System.EventArgs e)
		{
			Form2 f2 = new Form2();
			int result;
			result = f2.ShowDialog(this);
			DataSet m_dataset = (dataset)dataGrid1.DataSource; // А это наш dataset я его беру прямо из dataGrid, 
			//можно любым другим способом и с этим же dataset и в этот же объект я должен вносить изменения в форме2
			if (result ==  System.Windows.Forms.DialogResult.OK)
			{
				// Это обозначает что в форме2 нажали кнопку ОК
				// проверим есть ли изменения в нем
				if (m_dataset.HasChanges(DataRowState.Added))
				{
					DataSet changedAddedDataSet = m_dataset.GetChanges(DAtaRowState.added); // Создадим новый dataset в который попадут все добавленные записи
					// Передадим в БД например следующей процедурой
					InsertRecordsInDB(changedDataSet,  "ИмяТаблицы" );
				    // В этой процедуре я могу в цикле пробежаться по записям таблицы  "ИмяТаблицы"  
					//и вызвать для каждой из них. Тут может находиться UPDATE или EXECUTENONQUERY
                    // Принять 
					m_dataset.Merge(changedDataSet); // Объединим DataSet с теми записями что добавили
                    m_dataset.AcceptChanges(); // Примем изменения, БД в частности могло проставить значение первичных ключей если они являются автогененрируемыми
				}
			}
			else
			{
				// Сюда я поподу если нажму кнопку CANCEL или закрою форму любым другим 
				// способом кроме как нажатием кнопки ОК
				// А здесь я просто отменю все изменения нафиг
				m_dataset.RejectChanges();
			}
		}




Стоит отметить что в форме2 никакого кода для доступа к БД не должно быть. Все делается в форме1 по аналогии но только с некоторыми НО можно сделать в форме1 обработку ИЗМЕНЕНИЯ данных, УДАЛЕНИЯ данных.
Никакие другие объекты при закрытии формы2 не создаются. Если тебе и хочется поработать с данными формы1 из формы2 . То если это модальной окно обратись к своему владельцу (Форма2.Owner) - это и будет форма1. (f2.ShowDialog(this); - this как раз устанавливает владельца модального диалога)

P.S. Если не хочется особо думать то воспользуйся DATAWIZARD и посмотри на автоматически сгенерированный код. В нем есть минусы но представление о том как работать с DataSet тебе даст.

Разницы что это C# или VB.NET нет - тут разница только в синтаксисе а работает все одинаково быстро.

В этом коде данные не запрашиваются никогда повторно, то есть полного REFRESH нет, а то представь что постоянно по сетке качать всю таблицу целиком. Мы работаем только с измененными данными их собственно отправляем в БД, и получаем кукиш если БД их не принимает (целостная ссылочность).

Советую почитать хорошую книжку по ADO.NET ( лучшие это от WROX красные книги с фотографиями авторов) Professional ADO.NET например.
...
Рейтинг: 0 / 0
Как сделать перменные видными
    #32385812
sadsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за совет
Хотя по твоим записям я не совсем разобралси, но натолкнул ты меня на другое решение

private void button1_Click(object sender, System.EventArgs e)

{


zusammenForm f = new zusammenForm();
DialogResult result = f.ShowDialog(this);

switch(result)
{
case DialogResult.OK:

sqlDataAdapter1.Fill(dataSet31);
break;

case DialogResult.Cancel:
default:




break;




}


Спасибо
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как сделать перменные видными
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]