Piszę funkcję która wyświetla obrazek w pełnych wymiarach po “hover” myszą na obiekt w listView. Interesują mnie na razie jedna rzecz, bo nie mogę tego znaleźć. Skad wziąć index elementu zaznaczonego przez Mouse_Hover ? Bo to nie jest chyba selected item z racji tego, że nie jest zaznaczany, jedynie sprawdzany czas na danym elemencie. Muszę jakoś zdobyć id tego elementu (elmenty są zarówno w listview jak i w bazie imagelist), bo potrzebny mi jego rozmiar.
Wrzucę całą metodę jakby ktoś chciał się zorientować w kodzie, ale od razu mówię, że jest tu mnóstwo śmieci, bo dopiero to składam, a raczej staram się
private: System::Void listView1_ItemMouseHover(System::Object^ sender, System::Windows::Forms::ListViewItemMouseHoverEventArgs^ e)
{
try
{
PictureBox ^pict = gcnew System::Windows::Forms::PictureBox();
Form ^ form = gcnew System::Windows::Forms::Form();
form->FormBorderStyle = ::FormBorderStyle::None;
int x = imageList1->Images[listView1->HoverSelection::get()]->Width;
int y = imageList1->Images[listView1->HoverSelection::get()]->Height;
int z = listView1->LargeImageList->Images->
MessageBox::Show(x.ToString() + " " + y.ToString() + " " + z.ToString());
//form->Size = System::Drawing::Size(imageList1->Images[listView1->HoverSelection::get()]->Width , imageList1->Images[listView1->HoverSelection::get()]->Height );
form->SetAutoSizeMode(::AutoSizeMode::GrowAndShrink); //form->Size = System::Drawing::Size(500,500);
form->Controls->Add(pict);
//pict->Image = Bitmap::FromFile(openFileDialog1->FileNames[1]);
pict->Location = System::Drawing::Point(0, 0);
pict->Size = System::Drawing::Size(500,500);
//pict->Size = System::Drawing::Size(imageList1->Images[listView1->HoverSelection::get()]->Width, imageList1->Images[listView1->HoverSelection::get()]->Height);
// pict->Image = Bitmap::FromFile(openFileDialog1->FileNames[1]);
// pict->Image->FromFile(openFileDialog1->FileNames[1]);
// form->Controls->Add(pict);
// form->ShowDialog();
// pict->Show();
//pict->Update();
form->Show();
pict->Image = Bitmap::FromFile(openFileDialog1->FileNames[1]);
// if (listView1->OnMouseLeave(e) == true) {}
}
catch(Exception^ e)
{
MessageBox::Show(e->ToString());
}
}
– Dodane 16.12.2010 (Cz) 18:26 – Ok, już zrobiłem Tu jest kod, jakby ktoś miał taki sam problem i nie wiedział jak
System::Windows::Forms::ListViewItem ^z = listView1->GetItemAt(::Cursor::Position.X,::Cursor::Position.Y);
int w = Convert::ToInt32(z);
Kod pobiera index elementu na podstawie położenia kursora, a w zawiera liczbowy numer tego indexu.