*Form::Init *-- Set up the RowSource of the ListBox DO CASE CASE EMPTY(tcSource) CASE [.] $ tcSource this.lstList.RowSource = tcSource this.lstList.RowSourceType = 6 OTHERWISE this.lstList.RowSource = tcSource this.lstList.RowSourceType = 1 ENDCASE *-- My own array for tracking selected items DIMENSION this.aItemSel(this.lstList.ListCount) FOR x = 1 TO ALEN(this.aItemSel,1) this.aItemSel(x) = .F. ENDFOR *-- Try to pre-select the items IF !EMPTY(tcPreSelect) this.cPreSelect = tcPreSelect this._PreSelect ENDIF *EndInit *procedure Form::_PreSelect IF !EMPTY(this.cPreselect) lnWords = GETWORDCOUNT(this.cPreSelect,[,]) FOR x = 1 TO lnWords lnWord = ALLTRIM(GETWORDNUM(this.cPreSelect,x,[,])) lnMatch = 0 FOR y = 1 TO this.lstList.ListCount IF lnWord == ALLTRIM(this.lstList.ListItem(y)) lnMatch = y EXIT ENDIF ENDFOR IF lnMatch # 0 this.lstList.Picture(lnMatch) = "listchk.bmp" this.aItemSel(lnMatch) = .T. ENDIF ENDFOR ENDIF this.lstList.Refresh *End_PreSelectIf I add a button to the form and have the click event call this._PreSelect, everything works great. Also, the call to _PreSelect does indeed find the matches and set the selected flag in my array. However, setting the picture during Init does not seem to have any affect.