Ejemplo n.º 1
0
        private void listViewSpreadsheets_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!m_bRequireSheetSelect)
            {
                return;
            }

            if (listViewSpreadsheets.SelectedItems.Count == 1)
            {
                new Thread(() =>
                {
                    Func <ListViewItem> getCurrentSelectedtem = () =>
                                                                listViewSpreadsheets.SelectedItems.Count == 1 ? listViewSpreadsheets.SelectedItems[0] : null;


                    var zLvi = listViewSpreadsheets.InvokeFunc(getCurrentSelectedtem);

                    var listSheets = PerformSpreadsheetRetrieve(
                        () => m_zGoogleSpreadsheet.GetSheetNames(((GoogleSheetInfo)zLvi.Tag).Id),
                        () => listViewSheets.InvokeAction(() => listViewSheets.Clear()));

                    if (null == listSheets)
                    {
                        return;
                    }

                    var listNewItems = new List <ListViewItem>();
                    foreach (var sSheetName in listSheets)
                    {
                        var zNewLvi = new ListViewItem(sSheetName)
                        {
                            Tag = sSheetName
                        };
                        listNewItems.Add(zNewLvi);
                    }
                    if (listViewSpreadsheets.InvokeFunc(getCurrentSelectedtem) == zLvi)
                    {
                        listViewSheets.InvokeAction(() =>
                        {
                            listViewSheets.Items.Clear();
                            listViewSheets.Items.AddRange(listNewItems.ToArray());
                            listViewSpreadsheets.Sort();
                        });
                    }
                }).Start();
            }
            else
            {
                listViewSheets.Items.Clear();
            }
        }