Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Запись информации из окна  (Прочитано 16099 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
Gor
Постоялец

ru
Offline Offline

« : 02-03-2012 18:12 » 

Привет.

В диалоговом окне 1 (Forms) нажимается кнопка и открывается диалоговое окно 2 (WPF). В textbox’e окна 2 вводится какой-то текст. Затем нажимается кнопка в окне 2 и текст из этого окна должен попадать в переменную окна 1.
Как это можно сделать?

Заранее благодарю.


Добавлено через 4 дня, 12 минут и 20 секунд:
Привет.

В диалоговом окне 1 (Forms) нажимается кнопка и открывается диалоговое окно 2 (Forms). В editbox’e окна 2 вводится какой-то текст. Затем нажимается кнопка в окне 2 и текст из этого окна должен попадать в переменную окна 1.
Как это можно сделать?

Заранее благодарю.
« Последнее редактирование: 06-03-2012 18:24 от Gor » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 06-03-2012 18:43 » new

Gor, ты бы хоть XAML и C# код форм привёл. Кто ж тебя знает, как у тебя классы форм связаны друг с другом.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Gor
Постоялец

ru
Offline Offline

« Ответ #2 : 12-03-2012 17:07 » 

Привет!

Код: (C#)
public partial class Form_panels_user : Form
{
...........................................
//Так вызывается XAML – файл Scheme_name.xaml
private void button_scheme_name_Click(object sender, EventArgs e)
        {
            Scheme_name s_name = new Scheme_name();
            s_name.ShowDialog();
        }
……………………………………………………………………………………………………………………
}

//Это Scheme_name.xaml.cs
public partial class Scheme_name : Window
{
        public Scheme_name()
        {
            InitializeComponent();
        }

        private void button_ok_Click(object sender, RoutedEventArgs e)
        {
            ///В ДАННОМ СОБЫТИИ (ПО НАЖАТИЮ ЭТОЙ КНОПКИ) ИЗ EDITBOXA ЭТОГО ОКНА ИНФОРМАЦИЯ (НАПРИМЕР, КАКОЕ-ТО СЛОВО) ДОЛЖНА ПОПАДАТЬ ОБРАТНО В ПЕРЕМЕННУЮ КЛАССА Form_panels_user
        }
}

//Например сюда

private void Form_panels_user_Load(object sender, EventArgs e)
 {
            FileStream fin;
            fin = new FileStream("DOS.xml", FileMode.OpenOrCreate);
            long l_fin = fin.Length;
            fin.Close();

            if (l_fin == 0)
            {
                //Записываем в "DOS.xml"
                XNamespace tp = "http://www.novo.ru/" + ПЕРЕМЕННАЯ; //пространство имен
......................................
           
           }

}

Извините, за возможно убогое объяснение.


Добавлено через 1 день, 32 минуты и 35 секунд:
Или что - нибудь в общем виде. Т.е. из окна которое закрывается информация в окно из которого оно открывалось.
« Последнее редактирование: 13-03-2012 17:57 от Gor » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 14-03-2012 05:58 » 

Gor, XAML-код где?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Gor
Постоялец

ru
Offline Offline

« Ответ #4 : 15-03-2012 17:44 » 

Привет. Спасибо, что откликнулся!
XAML-код:

Код:
<Window x:Class="ESInEI.Scheme_name"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Название схемы"
        Height="135"
        Width="250">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <GroupBox Header="Введите название схемы: "
                  Background="AliceBlue">
            <TextBox x:Name="name_scheme"
                     KeyUp="name_KeyUp"
                     VerticalAlignment="Top"
                     Margin="0,20,0,10"
                     Height="23"
                     Width="200" />
        </GroupBox>
        <GroupBox Grid.Row="1"
                  Background="AliceBlue">
            <StackPanel Orientation="Horizontal">
                <Button x:Name="button_ok"
                        Content="Да"
                        Click="button_ok_Click"
                        Margin="10,0,0,0"
                        VerticalAlignment="Bottom"
                        Height="23"
                        Width="75">
                </Button>
                <Button x:Name="button_cancel"
                        Content="Отмена"
                        Click="button_cancel_Click"
                        Margin="50,0,0,0"
                        VerticalAlignment="Bottom"
                        Height="23"
                        Width="75">
                </Button>
            </StackPanel>
        </GroupBox>
    </Grid>
</Window>
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 16-03-2012 06:26 » 

Gor, раз ShowDialog, то вообще всё просто. В классе Scheme_name заводишь public свойство строковое, привязанное к строковой переменной. В обработчике нажатия на Ok в строковую переменную записываешь содержимое текст-бокса. В другом классе сразу после ShowDialog, проверив, что ShowDialog вернул Ok, а не Cancel, читаешь строковое свойство из sheme_name и дальше делаешь с его значением всё, что тебе нужно.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Gor
Постоялец

ru
Offline Offline

« Ответ #6 : 16-03-2012 18:12 » 

Спасибо, друг. Получилось.

Вот только с проверкой, что ShowDialog вернул Ok, а не Cancel что-то не понятное. Работаю без неё, а это не правильно. Написал так:

Код: (C#)
//Так вызывается XAML – файл Scheme_name.xaml
private void button_scheme_name_Click(object sender, EventArgs e)
{
            Scheme_name s_name = new Scheme_name();
            s_name.ShowDialog();

            if (ShowDialog() == DialogResult.OK)
            {
                nm_scm = s_name.sch_nm;
            }
}

Выдает ошибку на строку  if (ShowDialog() == DialogResult.OK) : "Форму, уже отображенную, нельзя отобразить как модальное диалоговое окно. Установите свойство видимости данной формы равным false перед вызовом showDialog".
Как победить её не подскажешь?
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 16-03-2012 18:26 » 

Я не совсем спец, но подозреваю, делать надо так:
Код: (C#)
//Так вызывается XAML – файл Scheme_name.xaml
private void button_scheme_name_Click(object sender, EventArgs e)
{
            Scheme_name s_name = new Scheme_name();

            if (s_name.ShowDialog() == DialogResult.OK)
            {
                nm_scm = s_name.sch_nm;
            }
}
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 16-03-2012 19:57 » 

Чтобы ShowDialog вернул, что надо, надо в диалоге указать, что кнопки "OK" и "Отмена" - это не простые кнопки, а кнопки диалога с определёнными значениями.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Gor
Постоялец

ru
Offline Offline

« Ответ #9 : 17-03-2012 11:41 » 

Да Вад, я именно это и имел ввиду, просто описался. И выдает ту ошубку, что писал ранее. Разумеется if (s_name.ShowDialog() == DialogResult.OK)..., а не просто ...ShowDialog()...

Извиняюсь, Dimka. Как это сделать?
« Последнее редактирование: 17-03-2012 11:46 от Gor » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 17-03-2012 12:01 » 

Gor, свойства окна посмотри в дизайнере.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Gor
Постоялец

ru
Offline Offline

« Ответ #11 : 17-03-2012 12:38 » 

Присваивание DialogResult.OK не работает. Может потому что, класс Scheme_name производный от Window, а не Form.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 17-03-2012 13:32 » 

Gor, глянул в MSDN, чего и тебе желаю.

Во-первых, в WPF, в отличие от Forms, свойства не в форме, а в кнопках. IsCancel, IsDefault и т.д. Их можно установить в XAML.

Во-вторых, в WPF DialogResult - это Nullable<bool> тип, а не enum. Соответственно и DialogResult.OK не присваивается. Нужно либо true, либо false, либо null.

Класс Form - это из другой оперы.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Gor
Постоялец

ru
Offline Offline

« Ответ #13 : 17-03-2012 17:10 » 

Да. Все так.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines