Всем привет.
У меня возникла следующая проблема. Разрабатываю приложение. Отдельно пишется ядро, в котором реализовывается весь функционал приложения. Отдельно разрабатывается форма на WPF.
Дак вот. Когда я начал писать загрузчик всего приложения, который загружает ядро, форму и связывает их через интерфейсы, то получил такой непонятный фокус:
когда я пытаюсь набрать на форме в TextBox'е текст, то ничего не набирается. ВООБЩЕ НИЧЕГО НЕ НАБИРАЕТСЯ. Срабатывает только пробел и бэкспейс. Если же попробовать вставить в этот TextBox текст скопированный в буфер обмена, то все нормально вставляется. Однако если эту же форму запустить как самостоятельное приложение, то все набирается как и должно, то есть форма полностью рабочая.
Что это за странное поведение WPF-формы а именно TextBox'а и как с этим бороться?
8 марта 2010 в 12:03
catch (Exception e)
{
MessageBox.Show("Приложение или объект, вызвавший ошибку: " + e.Source + "\n\n" +
"Метод, вызвавший исключение: " + e.TargetSite + "\n\n" +
"Сообщение исключения: " + e.Message,
"Ошибка");
}
}
/// <summary>
/// Действия при закрытии приложения.
/// </summary>
private void ClosedMainForm(object sender, EventArgs e)
{
Application.Exit();
}
}
}
}
8 марта 2010 в 12:03
Код весь не влез =)
8 марта 2010 в 12:02
Вот собственно загрузчик, при написании которого выявилось странное поведение формы:
using System;
using System.Windows.Forms;
using Core;
using Core.ProgramObject;
using Core.CompilerConveyorController;
using Forms;
namespace Education_Studio
{
class Program
{
/// <summary>
/// Точка входа в приложение.
/// </summary>
/// <param name="args">Аргументы, переданные при запуске приложения.</param>
[STAThread] // Запросить, чтобы главный поток приложения вошел в однопоточный апартамент
static void Main(string[] args)
{
try
{
// Включение всех визуальных стилей для приложения
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// Запуск приложения как такогого
MainApplication application = new MainApplication();
application.Run();
Application.Run();
}
catch (Exception e)
{
MessageBox.Show("Приложение или объект, вызвавший ошибку: " + e.Source + "\n\n" +
"Метод, вызвавший исключение: " + e.TargetSite + "\n\n" +
"Сообщение исключения: " + e.Message,
"Ошибка");
}
}
/// <summary>
/// Главный класс приложения.
/// </summary>
private class MainApplication
{
/// <summary>
/// Указатель на ядро компилятора.
/// </summary>
private Core.Core Core { get; set; }
/// <summary>
/// Указатель на интерфейс программы.
/// </summary>
private IProgramObject Program { get; set; }
/// <summary>
/// Указатель на интерфейс конроллера.
/// </summary>
private ICompilerConveyorController Controller { get; set; }
/// <summary>
/// Указатель на загрузочную форму.
/// </summary>
private LoadWindow LoadWindow { get; set; }
/// <summary>
/// Указатель на главную форму.
/// </summary>
private MainWindow MainWindow { get; set; }
/// <summary>
/// Запуск приложения.
/// </summary>
public void Run()
{
try
{
// Загрузка загрузочной формы
LoadWindow = new LoadWindow();
LoadWindow.Show();
// Загрузка ядра
this.Core = new Core.Core();
this.Program = this.Core.GetProgramObject();
this.Controller = this.Core.GetCompilerConveyorController();
// Загрузка основной формы
MainWindow = new MainWindow();
MainWindow.Closed += ClosedMainForm;
// Связываение формы и ядра
// Уборка загрузочной формы
LoadWindow.Close();
// Финальное отображение программы
MainWindow.Show();
}
catch (Exception e)
{
MessageBox.Show("Приложение или объект, вызвавший ошибку: " + e.Source + "\n\n" +
"Метод, вызвавший исключение: " + e.TargetSite + "\n\n" +
8 марта 2010 в 10:02
> Могу привести код загрузчика если хотите взглянуть.
Да давай.
8 марта 2010 в 1:04
Мне кто-нибудь может помочь или хотя бы посоветовать в каком направлении копать?
7 марта 2010 в 0:01
Да нет. Ток вот причем тут могут быть интерфейсы? В интефейсах события не используются, то есть при нажатии кнопки, событие формы не перехватывается ядром.
Кстати даже не производя связывание формы с ядром такая же проблема.
Могу привести код загрузчика если хотите взглянуть.
6 марта 2010 в 22:00
ваша связь через интерфейсы все портит?