Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

selektovanje jednog (ili vise) itema u OpenFileDialog ...

[es] :: .NET :: selektovanje jednog (ili vise) itema u OpenFileDialog ...

[ Pregleda: 1943 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ghost2k3
Lat45.2508; Lon19.3919

Član broj: 25133
Poruke: 688
93.86.61.*

Sajt: www.google.com


+8 Profil

icon selektovanje jednog (ili vise) itema u OpenFileDialog ...13.02.2009. u 17:36 - pre 135 meseci
C#

Imam openFileDialog i zelim da kada se on otvori, neki fajlovi vec budu selektovani.
Nasao sam na netu kako da selektujem sve fajlove
Code:
SendMessage(listviewHandle, 0x0111/*WM_COMMAND*/, (uint)0x00017021, (uint)0);


Onda sam takodje nasao da bi sa ovim dole kodom trebao da se selektuje item sa indexom 1,medjutim to se ne desava. SendMessage ne vraca lb_err, nego 0.
Code:
SendMessage(listviewHandle, 0x0185/*LB_SETSEL*/, true, 1);




[Ovu poruku je menjao ghost2k3 dana 13.02.2009. u 21:14 GMT+1]
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
219.138.61.*

Sajt: www.mika.rs


+6 Profil

icon Re: selektovanje jednog (ili vise) itema u OpenFileDialog ...14.02.2009. u 05:07 - pre 135 meseci
A kako si nasao hendl za ListView ? Mozda da je tu greska. Moras da uzmes hendl prozora dialoga pa da iteriras kroz njegove child kontrole dok ne nadjes ListView.
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

ghost2k3
Lat45.2508; Lon19.3919

Član broj: 25133
Poruke: 688
79.101.252.*

Sajt: www.google.com


+8 Profil

icon Re: selektovanje jednog (ili vise) itema u OpenFileDialog ...14.02.2009. u 08:19 - pre 135 meseci
Ovako ide primer za selektovanje svih itema:

Code:
protected override void WndProc(ref Message m)
       {
             // Leting the Form take care off all messages.
            base.WndProc(ref m);

            if (m.Msg == 289) // Notify of message loop
            {
                uint dialogHandle = (uint)m.LParam; // Handle of the file dialog

                if (dialogHandle != m_lastDialogHandle) // Only when not already changed
                {
                    // Getting the handle of the ListBox in the OpenFileDialog dialog.
                    uint listviewHandle = FindWindowEx(dialogHandle, 0,
                    "SHELLDLL_DefView", "");

                    // Sending message to the ListBox to set the view to Thumbnails
                    //Icons=0x7029, List=0x702b, Details=0x702c, Thumbnails=0x702d,
                    //Tiles = 0x702e;
                    SendMessage(listviewHandle, 0x0111/*WM_COMMAND*/, (uint)0x702b, 0);

                    // Sending message to the ListBox to select all items.
                    uint retval = SendMessage(listviewHandle, 0x0111/*WM_COMMAND*/, (uint)0x00017021, (uint)0);
                    
                    // Remember last handle
                    m_lastDialogHandle = dialogHandle;

                }
           }


Na isti nacin i ja uzimam handle, samo sto mu saljem drugaciju poruku sa drugacijim parametrima.

Posle sam probao u test aplikaciji (form, button, listview) da handle uzmem sa listView.Handle, medjutim ni tada ne radi.

[Ovu poruku je menjao ghost2k3 dana 14.02.2009. u 09:31 GMT+1]
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
219.138.61.*

Sajt: www.mika.rs


+6 Profil

icon Re: selektovanje jednog (ili vise) itema u OpenFileDialog ...14.02.2009. u 11:24 - pre 135 meseci
Hmmm, vidim gde je greska Ti ListView-u saljes poruku koja je za listbox ! I ja sam se isto zatracao .... uglavnom, pogledaj ovo http://www.devnewsgroups.net/g...rk.windowsforms/topic4250.aspx
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

ghost2k3
Lat45.2508; Lon19.3919

Član broj: 25133
Poruke: 688
79.101.252.*

Sajt: www.google.com


+8 Profil

icon Re: selektovanje jednog (ili vise) itema u OpenFileDialog ...14.02.2009. u 12:55 - pre 135 meseci
Evo bas probavam taj primer sto si mi poslao

Code:
public partial class Form1 : Form
    {
        IntPtr h;
        int index = -1;

        private const long LVIS_STATEIMAGEMASK = 0xF000;
        private const long LVIS_UNCHECKED = 0x1000;
        private const long LVIS_CHECKED = 0x2000;
        private const long LVIF_STATE = 0x8;
        private const long LVM_FIRST = 0x1000;
        private const long LVM_SETITEMSTATE = (LVM_FIRST + 43);
        private const long LVIS_SELECTED = 0x2000;

        public Form1()
        {
            InitializeComponent();
            this.listView1.HideSelection = true;
            this.listView1.MultiSelect = true;
            h = this.listView1.Handle;
        }

        public struct LVITEM
        {
            public long mask;
            public long iItem;
            public long iSubItem;
            public long state;
            public long stateMask;
            public string pszText;
            public long cchTextMax;
            public long iImage;
            public long lParam;
            public long iIndent;
        }

        [DllImport("user32.dll")]
        private static extern uint SendMessage(IntPtr Hdc, long Msg_Const, int wParam, IntPtr lParam);


        private void button1_Click(object sender, EventArgs e)
        {
            LVITEM lvItem = new LVITEM();
            lvItem.mask = LVIF_STATE;
            lvItem.stateMask = LVIS_STATEIMAGEMASK;
            lvItem.state = LVIS_SELECTED;
            IntPtr pointer = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(LVITEM)));
            Marshal.StructureToPtr(lvItem, pointer, true);
            SendMessage(h, LVM_SETITEMSTATE, index, pointer);
            Marshal.FreeHGlobal(pointer);
        }
    }


Javlja mi sledecu gresku u redu gde je SendMessage(...):
"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Sad kontam da ovaj pointer nije dobar, ali ne znam kako nije dobar, deluje mi sve ok odradjeno.

Elem, poenta citave price je da kada se prikaze OpenFileDialog, neki itemi vec budu selektovani u oknu gde se nalazi lista dokumenata. E sad ako znas neki drugi nacin da se to realizuje, moze, ne mora to ovako da ide.
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
219.138.61.*

Sajt: www.mika.rs


+6 Profil

icon Re: selektovanje jednog (ili vise) itema u OpenFileDialog ...14.02.2009. u 14:02 - pre 135 meseci
Tja, nista pametno mi ne pada na pamet, ali da probas sa unsafe kodom ? Nesto kao:
Code:

//deo koda pre poziva SendMessage
unsafe{
  fix(void *p = pointer.ToPointer()){
    SendMessage(h, LVM_SETITEMSTATE, index, p);
  }
}
//pa ostatak


Jedan fajl mozes preko property-a FileName da postavis, ali za vise ne znam
Sigurno neko ima elegantnije resenje.
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

ghost2k3
Lat45.2508; Lon19.3919

Član broj: 25133
Poruke: 688
79.101.252.*

Sajt: www.google.com


+8 Profil

icon Re: selektovanje jednog (ili vise) itema u OpenFileDialog ...14.02.2009. u 20:18 - pre 135 meseci
Pda, da su samo ostavili set za FileNames :) ...
 
Odgovor na temu

ghost2k3
Lat45.2508; Lon19.3919

Član broj: 25133
Poruke: 688
82.117.202.*

Sajt: www.google.com


+8 Profil

icon Re: selektovanje jednog (ili vise) itema u OpenFileDialog ...23.03.2009. u 14:18 - pre 134 meseci
Inace resio sam ovo. Moze sa send message, ali nisam koristio poruke za select item, nego za klik misa na odredjenu lokaciju. Znaci send message da mi vrati lokaciju itema, pa onda send msg za ctrl pa send msg za mouse klik i tako redom :) Ako ih ima vise, pa se ne vide u jednom oknu, onda moras i da uradis skrol, pa opet ista procedura.
 
Odgovor na temu

[es] :: .NET :: selektovanje jednog (ili vise) itema u OpenFileDialog ...

[ Pregleda: 1943 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.