Gor
Постоялец
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
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #1 : 06-03-2012 18:43 » |
|
Gor, ты бы хоть XAML и C# код форм привёл. Кто ж тебя знает, как у тебя классы форм связаны друг с другом.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Gor
Постоялец
Offline
|
|
« Ответ #2 : 12-03-2012 17:07 » |
|
Привет! 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
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #3 : 14-03-2012 05:58 » |
|
Gor, XAML-код где?
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Gor
Постоялец
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
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #5 : 16-03-2012 06:26 » |
|
Gor, раз ShowDialog, то вообще всё просто. В классе Scheme_name заводишь public свойство строковое, привязанное к строковой переменной. В обработчике нажатия на Ok в строковую переменную записываешь содержимое текст-бокса. В другом классе сразу после ShowDialog, проверив, что ShowDialog вернул Ok, а не Cancel, читаешь строковое свойство из sheme_name и дальше делаешь с его значением всё, что тебе нужно.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Gor
Постоялец
Offline
|
|
« Ответ #6 : 16-03-2012 18:12 » |
|
Спасибо, друг. Получилось. Вот только с проверкой, что ShowDialog вернул Ok, а не Cancel что-то не понятное. Работаю без неё, а это не правильно. Написал так: //Так вызывается 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". Как победить её не подскажешь?
|
|
|
Записан
|
|
|
|
Вад
|
|
« Ответ #7 : 16-03-2012 18:26 » |
|
Я не совсем спец, но подозреваю, делать надо так: //Так вызывается 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
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #8 : 16-03-2012 19:57 » |
|
Чтобы ShowDialog вернул, что надо, надо в диалоге указать, что кнопки "OK" и "Отмена" - это не простые кнопки, а кнопки диалога с определёнными значениями.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Gor
Постоялец
Offline
|
|
« Ответ #9 : 17-03-2012 11:41 » |
|
Да Вад, я именно это и имел ввиду, просто описался. И выдает ту ошубку, что писал ранее. Разумеется if (s_name.ShowDialog() == DialogResult.OK)..., а не просто ...ShowDialog()...
Извиняюсь, Dimka. Как это сделать?
|
|
« Последнее редактирование: 17-03-2012 11:46 от Gor »
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #10 : 17-03-2012 12:01 » |
|
Gor, свойства окна посмотри в дизайнере.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Gor
Постоялец
Offline
|
|
« Ответ #11 : 17-03-2012 12:38 » |
|
Присваивание DialogResult.OK не работает. Может потому что, класс Scheme_name производный от Window, а не Form.
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
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
Постоялец
Offline
|
|
« Ответ #13 : 17-03-2012 17:10 » |
|
Да. Все так.
|
|
|
Записан
|
|
|
|
|