Avatar billede eaglee Nybegynder
24. februar 2006 - 21:51 Der er 6 kommentarer og
1 løsning

System.Windows.Forms.TabControl .net 1.0

Hej har sidet mange timer og bøvlet med TabControl, det er er problemet er:

Når jeg i grænsefladen vælger en ny TabPage på TabControlen, vil jeg gerne validere indholdet af den gamle TabPage ( den man står på) inden jeg skifter til en nye, hvis validering ikke gør godt, er jeg ikke interesseret i at skifte.

Har prøvet med nogle eventhandlers, men de bliver først udført efter der er skiftet, man kan selvfølgelig skifte ved at sætte selected til den man kom fra, men så giver det et lille blik i grænsefalde ( man kan se skiftet )

er der nogen der hved hvordan jeg kan løse dette problem ??
Avatar billede eaglee Nybegynder
24. februar 2006 - 22:39 #1
ups det heder jo 1.1
Avatar billede dr_chaos Nybegynder
25. februar 2006 - 08:48 #2
du skal bruge noget i denne stil:
[StructLayout(LayoutKind.Sequential)]
struct NMHDR
    {
    public IntPtr hwndFrom;
    public uint idFrom;
    public uint code;
    };

protected override void WndProc(ref System.Windows.Forms.Message m)
    {
    const uint WM_NOTIFY = 0x004E;
    const uint TCN_FIRST = 0xFFFFFDDA;
    const uint TCN_SELCHANGING = TCN_FIRST - 2;
    base.WndProc(ref m);

    switch ((uint)m.Msg)
    {
          case WM_NOTIFY:
          {
              int idCtrl = (int)m.WParam;
              NMHDR nmh = (NMHDR)m.GetLParam(typeof(NMHDR));
              if (nmh.code == TCN_SELCHANGING)
                    {
                    if (DisableTab)
                        MessageBox.Show("You cannot change the tab while processing");
                    else
                        {
                        //put your code here
                        }
                    }
              m.Result = (IntPtr)1;
              break;
              }
          }
    }


du kan kigge her:
www.experts-exchange.com/Programming/Programming_Languages/C_Sharp/Q_20633628.html+c%23+tabcontrol+prevent+index+change&hl=da&gl=dk&ct=clnk&cd=6" target="_blank">http://64.233.179.104/search?q=cache:Wl1_wR5u6c8J:www.experts-exchange.com/Programming/Programming_Languages/C_Sharp/Q_20633628.html+c%23+tabcontrol+prevent+index+change&hl=da&gl=dk&ct=clnk&cd=6
Avatar billede eaglee Nybegynder
25. februar 2006 - 14:31 #3
Det virker tak for det !!!
Avatar billede eaglee Nybegynder
25. februar 2006 - 15:11 #4
Det virker tak for det :-)
Avatar billede dr_chaos Nybegynder
25. februar 2006 - 17:12 #5
np smider lige et svar :)
Avatar billede eaglee Nybegynder
25. februar 2006 - 17:21 #6
fik godt nok ikke brug for det hele men det her virker
protected override void WndProc(ref System.Windows.Forms.Message m)
{
  base.WndProc(ref m);
  if(m_DataFunction == eDataFunction.Create && valgt )
  {
    const uint WM_NOTIFY = 0x004E;
                   
    if ( (uint)m.Msg == WM_NOTIFY )
    {
      if (ValidateForm())
      {
          FromGUI2State();
          m_Object.Validate();
          valgt = false;
      }
    }
    m.Result = (IntPtr)1;
  }
Avatar billede dr_chaos Nybegynder
26. februar 2006 - 11:38 #7
prøver lige igen
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester