ListView SelectedIndexChanged элементы вставляются дважды - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть список предложений в моей базе данных и список в моей пользовательской панели в VSTO.Когда я выбираю или перетаскиваю элемент списка, он копируется дважды.Я нашел этот ответ. Listview ItemSelectionChanged срабатывает дважды?

Но у меня нет метода isSelected для моего EventArgs e.Ниже приведен мой код, пожалуйста, помогите мне, я хочу, чтобы данные / текст копировались только один раз.

private void clauseList_SelectedIndexChanged(object sender, EventArgs e)
{
    ListView.SelectedListViewItemCollection col = clauseList.SelectedItems;

    string temp = clauseList.FocusedItem.Text;
    clauseList.DoDragDrop(temp, DragDropEffects.Move);

    Microsoft.Office.Interop.Word.Selection currentSelection = Globals.ThisAddIn.Application.Selection;
    Microsoft.Office.Interop.Word.Range range = currentSelection.Range;    
    currentSelection.TypeText(temp);
    currentSelection.TypeParagraph();
    clslst(select);
}

public void clslst(object s)
{
    DataAccess data = new DataAccess();
    List<ClauseDetails> details = new List<ClauseDetails>();
    details.AddRange(data.ClausesRelated(s));

    string FromtextFromDoc;
    FromtextFromDoc = Globals.ThisAddIn.Application.Selection.Text;
    Microsoft.Office.Interop.Word.Document docs = Globals.ThisAddIn.Application.ActiveDocument;
    List<string> clslist = new List<string>();
    string aa = "";
    int f = 0;

    string tempindex = "";
    foreach (Paragraph paragraph in docs.Paragraphs)
    {
        Style style = paragraph.get_Style() as Style;
        string styleName = style.NameLocal;
        //var sty = style.Font;
        //fontstyle = sty.Name;
        //fontsize = sty.Size;
        if (styleName.Equals("Heading 1"))
        {
            f += 1;
            if (f == 2)
            {
                tempindex = aa;
                f = 0;
                clslist.Add(tempindex);
                aa = "";
            }
        }
        if (f > 0)
        {
            aa += paragraph.Range.Text;
        }
    }
    clslist.Add(aa);
    List<string> ClausesNotPresent = new List<string>();
    List<string> ClausesPresent = new List<string>();

    for (int i = 0; i < clslist.Count; i++)
    {
        for (int j = 0; j < details.Count; j++)
        {
            if (clslist[i].Contains(details[j].clausetitle) || clslist[i].Contains(details[j].clause))
            {
                ClausesPresent.Add(details[j].clausetitle + "\n" + details[j].clause);
            }
        }
    }
    List<string> test = new List<string>();

    for (int z = 0; z < details.Count; z++)
    {
        test.Add(details[z].clausetitle + "\n" + details[z].clause);
    }
    if (ClausesPresent.Count < details.Count)
    {
        ClausesNotPresent.AddRange(test.Except(ClausesPresent));
    }
    for(int m=0;m<ClausesNotPresent.Count;m++)
    {
        ClausesNotPresent[m] = "\n"+ ClausesNotPresent[m];
    }

    clauseList.Clear();
    for (int i = 0; i < ClausesNotPresent.Count; i++)
    {
        clauseList.Items.Add(ClausesNotPresent[i]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...