Beispiel #1
0
        private void LoadImage(object sender, ElapsedEventArgs e)
        {
            if (OnDemandImageLoadStack.Count == 0)
            {
                ImageLoadTimer.Enabled = false;
                return;
            }

            try {
                DrawItemEventArgs itemEventArgs = OnDemandImageLoadStack.Pop();
                int         index = itemEventArgs.Index;
                FileBoxItem item  = (FileBoxItem)Items[index];
                item.LoadImage(ImageSize.Width, ImageSize.Height);

                int numVisibleItems = ClientSize.Height / ItemHeight;
                int nextIndex       = -1;
                if (OnDemandImageLoadStack.Count > 0)
                {
                    try {
                        nextIndex = OnDemandImageLoadStack.Peek().Index;
                    } catch (NullReferenceException) {
                        // Null event args
                    }
                }
                this.InvokeSafe(() => {
                    // Refresh only if we aren't going to have to refresh after the next item as well
                    if ((index >= TopIndex && index <= TopIndex + numVisibleItems) &&
                        !(nextIndex >= TopIndex && nextIndex <= TopIndex + numVisibleItems))
                    {
                        Refresh();
                    }
                });
            } catch (ArgumentOutOfRangeException) {
                // ignored
            }
        }