LINUX.ORG.RU

Проблема с WinForms под Mono

 ,


0

1

Я использую в своем приложении библиотеку Gwen для получения гуев в OpenTK. Однако для чтения и записи файлов в этой библиотеке используется методы, основанные на Windows.Forms Метод для загрузки файла выглядит так:

public static bool FileOpen(String title, String startPath, String extension, Action<String> callback)
        {
            var dialog = new OpenFileDialog
                             {
                                 Title = title,
                                 InitialDirectory = startPath,
                                 DefaultExt = @"*.*",
                                 Filter = extension,
                                 CheckPathExists = true,
                                 Multiselect = false
                             };
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                if (callback != null)
                {
                    callback(dialog.FileName);
                }
            }
            else
            {
                if (callback != null)
                {
                    callback(String.Empty);
                }
                return false;
            }

            return true;
        }
Проблема в том, что вызванный таким образом диалог не закрывается после использования, а остается висеть в виде зависшего окна. Остальное приложение при этом продолжает работать. Вызов нового подобного диалога приводит к тому, что первый исчезает, а новый работает нормально. Он тоже зависает, когда должен был закрыться. Похоже, что эта проблема никак не связана с самой библиотекой Gwen. В простом консольном приложении получается тоже самое:
public static void Main (string[] args)
{
//создаем диалог
	System.Windows.Forms.OpenFileDialog oFD = new System.Windows.Forms.OpenFileDialog ();
	oFD.InitialDirectory = ".";
	oFD.Filter = "(*.txt)|*.txt|All files (*.*)|*.*";
	oFD.FilterIndex = 2;
	oFD.RestoreDirectory = false;
//выводим диалог и пишем в консоль результат 
	Console.WriteLine (oFD.ShowDialog ());
//ожидаем нажатие в консоли, при этом диалог должен закрыться, но он "залип"
	Console.ReadKey ();
}
Эта проблема наблюдается только при запуске под Линуксом. В Винде вроде все нормально. Что я делаю не так?

Если под моно пишешь надо GTK# использовать. WinForms в моно очень нестабильный.

RevenantX ★★★★ ()
Ответ на: комментарий от RevenantX

Так у автора проблема в сторонней библиотеке. Хотя, тут можно и ручками переписать.

buddhist ★★★★★ ()

Проблема с НИНУЖНО под НЕНУЖНО.

rezedent12 ☆☆☆ ()

Что я делаю не так?

Пользуетесь всяким шлаком

anonymous ()
Ответ на: комментарий от RevenantX

Но мне нужно, чтобы программа запускалась и под линем, и по виндой без установки на каждый комп с виндой гтк

dmitry1204 ()
Ответ на: комментарий от RevenantX

Ты всегда вместо нормальных ответов даёшь бесполезные советы? «У меня машина глохнет, подскажите, что делать» - «ездь на самокате»

dmitry1204 ()
Ответ на: комментарий от dmitry1204

Это вполне полезный совет. WinForms на моно под линуксом достаточно плохо работает. Если ты уж и GTK# не хочешь использовать, то тут только Qt. Тут скорей как спросить «У меня машина по морю не плывет нормально, глохнет. Что делать?»

RevenantX ★★★★ ()
Последнее исправление: RevenantX (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.