2016-09-27 5 views
0

Ich habe ein Panel-Steuerelement mit einem Label und Textbox nebeneinander. In bestimmten Übersetzungen wird das Etikett zu lang und ich versuche GetChildAtPoint zu verwenden, um zu bestimmen, wann das Etikett zu lang geworden ist und es angemessen zu kürzen (ich weiß, es gibt andere/bessere Wege, aber ich bin etwas eingeschränkt in meiner Herangehensweise) Möglichkeit).GetChildAtPoint respektiert nicht ZOrder

Ich habe habe den Index und die Markierung 41, während die Textbox 0 ist
ich panelControl.GetChildAtPoint(new Point(labelControl.Location.X + labelControl.Width, labelControl.Location.Y)) verwenden, um zu versuchen und festzustellen, ob das Etikett zu lang ist oder nicht, aber aus irgendeinem Grund, der obige Code gibt die Label-Steuerelement anstelle des Textfelds.

In debug, labelControl.Location = 566, 305 und textBoxControl.Location = 716, 290. Das Label-Steuerelement hat eine Breite von 202

ich diesen Ansatz Arbeit in anderen Fällen gesehen habe und kann keine Unterschiede hier sehen, so Ich bin mir nicht sicher, warum es in diesem Szenario nicht funktioniert.

Antwort

1

Es scheint kein Problem mit Ihrem Code, bitte einige Tests tatsächlich fügt Größe und Lage Änderung in der Laufzeit

Beispiel zu sehen:

var point = new Point(label1.Location.X + label1.Width, 
     label1.Location.Y); 
    var p2 = panel1.Controls[1].Location; 
    var ctrl = panel1.GetChildAtPoint(point); 
    if (ctrl is TextBox) 
    { 
     textBox1.Text = "Got TextBox"; 
    } 
    else if (ctrl is Label) 
    { 
     textBox1.Text = "Got Label"; 
    } 

    textBox1.Text += string.Format(" {0}:{1} {2}:{3}", point.X, point.Y, p2.X, p2.Y); 
+0

Die zur Verfügung gestellten Werte von Debugging/Laufzeit sind. Ich bin mir nicht sicher, was ich sonst noch für Sie haben soll. – Trent

+0

Die Standorte sind die tatsächlichen Daten richtig? Können Sie auch kalkulatorische Daten eines neuen Punktes angeben (labelControl.Location.X + labelControl.Width, labelControl.Location.Y) – zquanghoangz

+0

768.305 (Textfeldbreite ist über 200) – Trent

Verwandte Themen