[C#] keyhandler + save filter

Pagina: 1
Acties:
  • 136 views sinds 30-01-2008
  • Reageer

  • GieltjE
  • Registratie: December 2003
  • Laatst online: 17:19

GieltjE

Niks te zien...

Topicstarter
Ik ben bezig een roosterviewer te schrijven en ben hier al bijna mee klaar. Alles werkt en functioneert zoals het hoort op een paar kleine puntjes na.

Ik wil in de savedialog meerdere extensies tegelijk weergeven in de filter.
Ik heb bijvoorbeeld;

C#:
1
saveFileDialog1.Filter = "Html page *.htm|*.htm";


Deze geeft nu alleen *.htm weer, hoe laat ik deze .htm en .html weergeven (ik heb al veel geprobeert, ik krijg alleen dat ie in het dropdown menutje meerdere weergeeft).

En ik gebruik een webbrowser element (een axbrowser gebeuren), en ik wil dingen als backspace, f5, ctrl+r afvangen zodat deze niet gebruikt kunnen worden.
F5 is al afgevangen door webbrowsershotcuts op disabled te zetten.

Ik kan al detecteren of iemand b.v. backspace indrukt of een andere toets(combinatie) door de volgende code te hangen aan het PreviewKeyDown event;

C#:
1
2
3
4
5
6
7
8
9
10
11
12
        private void test(object sender, PreviewKeyDownEventArgs e)
        {

            if (e.KeyValue == (int)System.Windows.Forms.Keys.Back)
            {

                messagebox.show("backspace");
                e.handled; <-- mag dus niet hier

            }

        }


Echter zou ik volgens google e.cancel of e.handled moeten gebruiken echter deze worden door het webbrowser keypreview element blijkbaar niet ondersteund.

En is er een manier om de url die onderaan een geprinte pagina komt te staan aan te passen?

Hell / 0


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
voor je filter string moet je gewoon instellen

C#:
1
saveFileDialog.Filter = "Html page (*.htm;*.html)|*.htm;*.html";

Dat staat ook gewoon in de MSDN.
You can add several filter patterns to a filter by separating the file types with semicolons. For example: "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*"
PreviewKeyDownEventArgs heeft inderdaad geen Handled property. Je zult dus een ander event moeten gebruiken om de keys af te vangen.

[ Voor 24% gewijzigd door Woy op 10-07-2007 19:36 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • IceM
  • Registratie: Juni 2003
  • Laatst online: 19:27
1:
code:
1
.Filter = "Html (.htm .html)|*.htm;*html";


Edit:

Te laat ...

[ Voor 47% gewijzigd door IceM op 10-07-2007 19:37 ]

...


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Ivm je 2de vraag; kan je niets doen met de ProcessKeyPreview oid method ?

https://fgheysels.github.io/


Verwijderd

Probeer 's "e.handled = true;" i.p.v. "e.handled;" ? Dat zou een hoop kunnen schelen... ;)

  • GieltjE
  • Registratie: December 2003
  • Laatst online: 17:19

GieltjE

Niks te zien...

Topicstarter
rwb schreef op dinsdag 10 juli 2007 @ 19:35:
voor je filter string moet je gewoon instellen

C#:
1
saveFileDialog.Filter = "Html page (*.htm;*.html)|*.htm;*.html";

Dat staat ook gewoon in de MSDN.
Dank je ik had het net steeds iets fout opgeschreven.
Verwijderd schreef op dinsdag 10 juli 2007 @ 21:37:
Probeer 's "e.handled = true;" i.p.v. "e.handled;" ? Dat zou een hoop kunnen schelen... ;)
e.handled staat niet tussen de aangegeven lijst en als ik het gewoon type krijg ik

code:
1
Error   1   'System.Windows.Forms.PreviewKeyDownEventArgs' does not contain a definition for 'handled'  C:\RoosterViewer\RoosterViewer\rv.cs    2242    19  RoosterViewer


Ik ga nu even naar de ProcessKeyPreview zoeken

[ Voor 4% gewijzigd door GieltjE op 10-07-2007 22:17 ]

Hell / 0


  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Verwijderd schreef op dinsdag 10 juli 2007 @ 21:37:
Probeer 's "e.handled = true;" i.p.v. "e.handled;" ? Dat zou een hoop kunnen schelen... ;)
En properties zijn niet camelcased maar pascal-cased, dus het zou "e.Handled = true;" moeten zijn. ;)

Verwijderd

GieltjE schreef op dinsdag 10 juli 2007 @ 22:00:
e.handled staat niet tussen de aangegeven lijst en als ik het gewoon type krijg ik
Sorry, ik zie nu pas dat je PreviewKeyDown gebruikt. Diens eventargs kent idd geen Handled property (wel logisch voor een preview event).
De KeyEventArgs van de KeyDown en KeyUp events kennen 'm wel, dus probeer 't daar 's mee.

  • GieltjE
  • Registratie: December 2003
  • Laatst online: 17:19

GieltjE

Niks te zien...

Topicstarter
Verwijderd schreef op dinsdag 10 juli 2007 @ 22:45:
[...]
Sorry, ik zie nu pas dat je PreviewKeyDown gebruikt. Diens eventargs kent idd geen Handled property (wel logisch voor een preview event).
De KeyEventArgs van de KeyDown en KeyUp events kennen 'm wel, dus probeer 't daar 's mee.
Die heb je dus niet voor het webbrowser element, die is zwaar gelimiteert om de een of andere reden(zal wel een logische zijn neem ik aan 8)7 )

Edit: heb met de volgende code berijkt dat ik kan uitlezen wat er in de applicatie gebeurt, alleen het webbrowser element is zijn eigen spelletje aan het spelen en laat niks zien 8)7

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        protected override bool ProcessKeyPreview(ref Message m)
        {

            
            KeyEventArgs args1 = new KeyEventArgs(((Keys)((int)m.WParam)) |
            Control.ModifierKeys);

            MessageBox.Show( Convert.ToString( args1.KeyValue));
             
            if (args1.KeyCode == Keys.Back)
            {

                return false;

            }

            return base.ProcessKeyPreview(ref m);

        }

[ Voor 40% gewijzigd door GieltjE op 10-07-2007 23:12 ]

Hell / 0


  • GieltjE
  • Registratie: December 2003
  • Laatst online: 17:19

GieltjE

Niks te zien...

Topicstarter
C#:
1
2
3
4
5
6
7
8
9
10
11
        private void Browser_Main_Handle_Preview_Keys(object sender, PreviewKeyDownEventArgs e)
        {

            if (e.KeyValue == (int)System.Windows.Forms.Keys.Back)
            {

                e.IsInputKey = true;

            }

        }


Werkt >:)

[ Voor 29% gewijzigd door GieltjE op 11-07-2007 01:03 ]

Hell / 0

Pagina: 1