[vb.net] Direct klikken op een ander form

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Hawtin
  • Registratie: Januari 2010
  • Laatst online: 10-10-2018
Hallo allemaal,


Ik heb een applicatie met twee forms waarvan de een via het main-form wordt aangeroepen met:

frmExtra.Show(Me)

Alleen wanneer mijn focus op het hoofd form staat en ik wil een knop indrukken op frmExtra moet ik twee keer klikken. De eerste keer om de focus op frmExtra te krijgen en de tweede keer om de knop daadwerkelijk in te drukken. Ik heb al vanalles geprobeerd met mousehover events die het form een focus geven etc. Ook een google search op "Focus multiple forms" en variaties daarop leverden niks op.

Wie o wie kan mij uit de brand helpen?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dit lijkt me een ontwerpfout; waarom zou je dat willen en noem eens 1 ander voorbeeld waar je eenzelfde behaviour hebt?

[ Voor 16% gewijzigd door RobIII op 09-12-2010 00:45 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Als je een mdi ontwerp maakt dan heb je dit probleem niet

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op donderdag 09 december 2010 @ 13:27:
Als je een mdi ontwerp maakt dan heb je dit probleem niet
Als je een fatsoenlijk ontwerp maakt volgt daar vanzelf uit of je mdi moet hebben of sdi, tdi of whatever. En daaruit volgt weer de rest ;) Een applicatie mdi maken om het gedrag dat TS beschrijft te verhelpen is symptoombestrijding ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Mavamaarten
  • Registratie: September 2009
  • Laatst online: 17:18

Mavamaarten

Omdat het kan!

Vreemd, heb dit ook al meegemaakt, zelfs heel vuile omwegen (die eigenlijk echt moeten werken) deden het niet (zoals timer interval 5 die telkens me.focus() doet)
De oplossing zat ergens anders in de code, die zorgde dat de main form toch de focus kreeg (met threads enzo)...

Android developer & dürüm-liefhebber


Acties:
  • 0 Henk 'm!

Verwijderd

RobIII schreef op donderdag 09 december 2010 @ 13:29:
[...]

Als je een fatsoenlijk ontwerp maakt volgt daar vanzelf uit of je mdi moet hebben of sdi, tdi of whatever. En daaruit volgt weer de rest ;) Een applicatie mdi maken om het gedrag dat TS beschrijft te verhelpen is symptoombestrijding ;)
Ik denk teveel in mn eigen situatie.
Ik had dit probleem ook en heb er uiteindelijk een mdi van gemaakt omdat dat in mijn specifieke situatie het beste werkt.

Acties:
  • 0 Henk 'm!

  • YakuzA
  • Registratie: Maart 2001
  • Niet online

YakuzA

Wat denk je nou zelluf hey :X

Het klinkt een beetje alsof je 2e form geen form zou moeten zijn, maar gewoon functionaliteit binnen je Main form?

Het is btw standaard windows/.NET gedrag dat alleen buttons op een forms met focus reageren op de user input. Gezien het onbedoeld op buttons klikken anders wel erg makkelijk word :)

Death smiles at us all, all a man can do is smile back.
PSN


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 10:17
Wij hebben dit gedrag ook wel eens aangepast, maar dan alleen voor toolstrips:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public partial class ClickThroughToolStrip : ToolStrip
{
    public bool ClickThrough { get; set; }

    protected override void WndProc(ref Message m)
    {
        base.WndProc(ref m);

        if (ClickThrough
            && m.Msg == NativeConstants.WM_MOUSEACTIVATE
            && m.Result == (IntPtr)NativeConstants.MA_ACTIVATEANDEAT)
        {
            m.Result = (IntPtr)NativeConstants.MA_ACTIVATE;
        }
    }

    internal sealed class NativeConstants
    {
        internal const uint WM_MOUSEACTIVATE = 0x21;
        internal const uint MA_ACTIVATE = 1;
        internal const uint MA_ACTIVATEANDEAT = 2;
        internal const uint MA_NOACTIVATE = 3;
        internal const uint MA_NOACTIVATEANDEAT = 4;
    }
}

Roomba E5 te koop

Pagina: 1