Witam,
Napisałem program WindowsForms pod Linux- MonoDevelop a następnie transponowałem go pod Windows gdzie pojawił się nieoczekiwany (dla mnie) problem.
Program umożliwia wczytanie pliku - OpenFileDialog. Formularz ten znajdując się nad głównym formularzem - aplikacją a dokładniej nad obiektem PicureBox do którego przypisana jest między innymi obsługa MouseDown, w momencie wyboru pliku aktywuje obsługę MouseDown w PictureBox.
Na ile zdołałem się zorientować problem leży w propagacji zdarzeń. Można ją zablokować (e.Handled) ale jak to zrobić w OpenFileDialog?
Ewentualnie można sprawdzać co jest żródłem wywołania zdarzenia. Problemem jest to, że e.OriginalSource jest właściwością MouseButtonEventArgs a nie MouseEventArgs.
Alternatywnym rozwiązaniem, którego chciałbym jednak uniknąć jest dodawanie - usuwanie obsługi zdarzeń związanych z myszą z PictureBox.
Z góry dzięki za wszelkie sugestie.

- Rejestracja:ponad 7 lat
- Ostatnio:ponad 7 lat
- Postów:6

- Rejestracja:ponad 21 lat
- Ostatnio:dzień
Program umożliwia wczytanie pliku - OpenFileDialog. Formularz ten znajdując się nad głównym formularzem - aplikacją a dokładniej nad obiektem PicureBox do którego przypisana jest między innymi obsługa MouseDown, w momencie wyboru pliku aktywuje obsługę MouseDown w PictureBox.
Ke? To zdecydowanie nie powinno mieć miejsca. Pokaż jak otwierasz ten OpenFileDialog.

- Rejestracja:ponad 7 lat
- Ostatnio:ponad 7 lat
- Postów:6
Nie sądzę aby było coś w tym szczególnego
private void onFileOpen(object sender, EventArgs e){
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "All DICOM Files(*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
if (ofd.FileName.Length > 0)
{
Cursor = Cursors.WaitCursor;
readDICOMFile(ofd.FileName);
Cursor = Cursors.Default;
}
ofd.Dispose();
}
}
Tak jak napisałem sytuacja ta ma miejsce tylko pod Windows i tylko jak formularz OpenFileDialog znajduje się nad (przepraszam za być może istotne niedopatzrenie) Panel-em a nie jak napisałem PictureBox.

- Rejestracja:ponad 12 lat
- Ostatnio:7 miesięcy
- Postów:6610
ja też uważam, że klikanie w OFD nie powinno w żaden sposób przenosić się na formę/komponenty pod nim. Czy jesteś w stanie stworzyć testowy projekt z minimalną ilością komponentów, gdzie problem ten występuje. Albo chociaż nagrać jak to wygląda.

- Rejestracja:ponad 7 lat
- Ostatnio:ponad 7 lat
- Postów:6
Ponownie witam,
Problem rozwiązany częściowo tzn. poprzez dodanie zmiennej i warunku nie wywołuje się nieporządana w tym momencie procedura ale zasadnicze pytanie pozostaje.
Sprostowanie - odpaleniu ulega obsługa MouseUp nie MouseDown i ciekawostka tylko jeśli wyboru pliku dokonuję przez dwuklik, natomiast NIE jeśli przez OK.
Co do testowego programiku to postaram się coś wyskrobać ale jeśli to późnym wieczorem.

- Rejestracja:ponad 7 lat
- Ostatnio:ponad 7 lat
- Postów:6
No i sprawa się rozwiązała? Tytuł wątku i moje podejrzenia okazały się błedne.
Jestem okazjonalnym użytkownikiem Windows i nie przyszło mi do głowy, że pod Windows przy dwukliku np odczyt pliku rozpoczyna się już po drugim MouseDown -> zamknięcie OFD -> MouseUp.
Sorry za zawracanie głowy. Jakby się dało to wątek do usunięcia.