Openfiledialog aplikacja się zacina w tym miejscu

Openfiledialog aplikacja się zacina w tym miejscu
K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

Witam mam taki problem używam komponentu openfiledialog po to by wydobyć ścieżkę do pliku który wybiera użytkownik to jest mój kod

Kopiuj
 OpenFileDialog openFileDialog = new OpenFileDialog();
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    pictureBox1.Image = Image.FromFile(openFileDialog.FileName.ToString());
                    fotka = true;
                }

i za pierwszym razem jak to używam jest wszystko ok, zamykam sobie okienko i robie to jeszcze raz i wtedy okno to co się otwarło zacina się i jest białe - aplikacja nie odpowiada, co może być przyczyną albo co robię źle.

interesuje mnie by wiele razy odczytywac ścieżki do pliku który wybiera użytkownik

xeo545x39
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kosmos
  • Postów: 1571
0

Czegoś jeszcze nam nie napisałeś. Tak po prostu nie może przestać odpowiadać, bo ten kod jest prawidłowy. Pokaż jak dokładnie wywołujesz ten kod.

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0
Kopiuj
 private void pictureBox1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    pictureBox1.Image = Image.FromFile(openFileDialog.FileName.ToString());
                    fotka = true;
                }
            

        }

mam ten kod przypisany do pictureBox1 z zdarzeniem click

nerf
  • Rejestracja: dni
  • Ostatnio: dni
0

A jak wczytujesz ten obrazek?
Tworzysz gdzieś instancje Image?
Pamiętam jak używałem StreamReader co czytania z pliku .txt to też program za drugim razem się sypał ponieważ nie zamykałem/zwalniałem strumienia poprzez
"x.Close() , x.Dispose()" może z Image trzeba tak samo.

UB
  • Rejestracja: dni
  • Ostatnio: dni
0

Nic się nie zacina, działa dobrze.
Ale weź machnij jakieś ustawienia do tego openfiledialogu żeby ktoś nie wczytał innych plików niż ty sobie zaplanujesz

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

jednak nie chodzi :)

RE
  • Rejestracja: dni
  • Ostatnio: dni
0

Masz ustawiony atrybut [STAThread] przy metodzie Main?

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

tak

RE
  • Rejestracja: dni
  • Ostatnio: dni
0

Używasz może jakiś kontrolek COM? Wołasz sam CoInitialize(Ex) przez P/Invoke albo coś w tym stylu? Spróbuj może wywołać okno z nowego wątku.

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

Nic takiego nie uzywam.
A powiesz mi jak to w nowym watku zrobic?

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

A jakiego masz antyvira?

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

F-secure

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

Niestety dalej ten sam problem mi się pojawia

msm
  • Rejestracja: dni
  • Ostatnio: dni
1

Możesz gdzieś wrzucić najprostszy możliwy kod który zacina się przy openfiledialogu u ciebie? Będzie prościej coś wymyślić jeśli udałoby się błąd powtórzyć...

maszynaz
  • Rejestracja: dni
  • Ostatnio: dni
1

Ja tylko dodam swoje dwa grosze. Po co

Kopiuj
openFileDialog.FileName.ToString()

skoro

Kopiuj
openFileDialog.FileName

już ci zwraca string.

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

czy jest możliwe że przyczyną jest to że w projekcie mam wrzuconą formatkę gdzie używam tego openfiledialog do folderu formatki?
tworzę nowy projekt i dodaje sobie nową formatkę bezpośrednio i wszystko jest ok nic nie zacina.

tylko w tym projekcie co robię zacina mi się to - w innym testowym działa wszystko normalnie

OT
  • Rejestracja: dni
  • Ostatnio: dni
0

Czy przypadkiem nie chodzi o to, że Image.FromFile może długo sie wykonywać dla dużego obrazka i blokuje główny wątek?

maszynaz
  • Rejestracja: dni
  • Ostatnio: dni
0

Dlaczego za każdym razem tworzysz OpenFileDialog?

Kopiuj
OpenFileDialog openFileDialog = new OpenFileDialog();

Utwórz go raz globalnie.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
maszynaz napisał(a)

Dlaczego za każdym razem tworzysz OpenFileDialog?

Kopiuj
OpenFileDialog openFileDialog = new OpenFileDialog();

Utwórz go raz globalnie.

Po co globalnie?

Ja bym sugerował tak:

Kopiuj
 
private void pictureBox1_Click(object sender, EventArgs e)
{
    using(OpenFileDialog openFileDialog = new OpenFileDialog())
    {
        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            pictureBox1.Image = Image.FromFile(openFileDialog.FileName);
            fotka = true;
        }
    }
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.