2014-10-19 2 views
0

Я хочу получить позицию элемента/подэлемента ListView. Я имею в виду, что я хочу получить Left и Top для этого подпункта. Это положение, которое я имею в виду:Позиция подвид Listview (формы C#)

enter image description here .

Я попытался это:

int item_x = list.Items[1].SubItems[2].Bounds.X; 
int item_y = list.Items[1].SubItems[2].Bounds.Y; 

Но это, кажется, не дают правильную позицию, я хочу.

+1

Я думаю, вы должны принять ваши координаты ListView в беспокойстве. Я думаю (я не знаю или не проверял, работает ли ваш код), что ваш код вернет координаты относительно вашего списка. Если ваш список находится в контейнере вместо непосредственно на форме, вы должны также принять это во внимание. –

+0

На самом деле цифры выглядят отлично. Правильные координаты в Listview, высота заголовка включены. Что они и чего вы ожидаете? – TaW

+0

Это просто не может быть правильно ... Вот где позиция становится http://spunit.cf/x/scrn352.png – spunit

ответ

0

Хорошо, кажется, что то, что я написал раньше, было правильным. Он просто нуждался в исправлении с некоторым добавлением и вычитанием, затем он выглядел следующим образом: http://spunit.cf/x/scrn370.png.

Спасибо, что заставило меня осознать это =).

Вот код для этого:

int item_l = list.Items[1].SubItems[2].Bounds.Left + 3; 
int item_t = list.Items[1].SubItems[2].Bounds.Top + 29; 
int item_w = list.Items[1].SubItems[2].Bounds.Width - 1; 
int item_h = list.Items[1].SubItems[2].Bounds.Height - 1; 

ListView listt = new ListView(); 
Controls.Add(listt); 
listt.BringToFront(); 
listt.Bounds = new Rectangle(new Point(item_l, item_t), new Size(item_w, item_h)); 
Смежные вопросы