2009-07-29 7 views
1

http://social.msdn.microsoft.com/forums/en-US/winforms/thread/e04e9308-bff5-4fbb-8cd6-0b2cd957aa68/?prof=requirednativen Verhalten von ComboBox ändern - comboBox ist hightlighted wenn seine Größe ändert

Nach einem anderen Forum, ist dieses Thema kein MS, weil sie sagen, dass das „native“ Verhalten des CombBox ist.

Wenn die ComboBox einen DropDownStyle = DropDown hat und ihre Größe ändert, wird der Text hervorgehoben, wenn das Formular viele ComboBox scheint, dass die Steuerelemente ausgewählt sind.

Um dieses Problem zu vermeiden, schlägt ein Typ vor, den WndProc zu überschreiben. Everthing funktionierte gut, bis nur ein Client ein nicht behandelter Fehler

System.ArgumentOutOfRangeException: InvalidArgument=Value of '-2136611475' is not valid for 'start'. 
Parameter name: start 
    at System.Windows.Forms.ComboBox.Select(Int32 start, Int32 length) 
    at System.Windows.Forms.ComboBox.set_SelectionLength(Int32 value)............... 

Klasse ComboBoxEx berichtet hat: ComboBox { const int WM_SIZE = 5;

protected override void WndProc(ref Message m) 
{ 
    switch(m.Msg) 
    { 
     case WM_SIZE: 
      string text = Text; 
      base.WndProc(ref m); 

      //The exception strangely is trown here 
      SelectionLength = 0; 

      Text = text; 
      break; 

     default: 
      base.WndProc(ref m); 
      break; 
    } 
} 

}

Ich weiß nicht, den Grund, warum dies nur mit einem Client geschieht. Irgendeine Idee? Danke, luisnike19

+0

I don kenne die Antwort nicht, aber du solltest wahrscheinlich ein Windows Forms-Tag hinzufügen. Könnte helfen, es vor Leuten zu bringen, die mehr Zeit auf diesen Fragen verbringen. – Mallioch

Antwort

0

Ich kann nicht an einen Fall denken, der das verursacht, aber ich habe einen Workaround. Ich habe set_SelectionLength (Int32-Wert) im Reflektor:

this.Select(this.SelectionStart, value); 

ich keine nicht, warum plötzlich eine negative Zahl geworden selection aber Sie können die Mittelsmann schneiden und diese Abhilfe Code Vorform:

this.Select(0, 0); 
+0

Dank HuBeza, diese Workaround funktioniert sehr gut, es ist einfach und es ist eine gute Idee. – Luisnike19

Verwandte Themen