Visual Studio 확장 프로그램에서 작업하고 현재 목표는 도구 메뉴에서 메뉴 항목을 설정하는 것입니다. 이 메뉴 항목을 클릭하면 ListView, 3 개의 텍스트 상자 및 버튼이 포함 된 WinForms 창이 열립니다. 생각하면 ListView에서 행 중 하나를 클릭하면 해당 행의 데이터가 텍스트 상자에 채워져 업데이트 할 수 있습니다. 단추를 클릭하면 새 행이 추가되고 텍스트 상자가 지워집니다. 그러나 내가 선택한 행의 색인을 가져 오는 데 문제가 있습니다.속성이 설정된 값과 다른 값을 반환합니다.
private int _index;
private void newSourceBtn_Click(object sender, EventArgs e)
{
// Add new row to the ListView
ListViewItem row = new ListViewItem();
row.SubItems.Add("new");
row.SubItems.Add(String.Empty);
row.SubItems.Add(String.Empty);
remoteSourceListView.Items.Add(row);
int index = remoteSourceListView.Items.Count - 1;
remoteSourceListView.Items[index].Selected = true;
newSourceAdded = true;
sourceNameTextBox.Clear();
sourceUrlTextBox.Clear();
}
public void SourceName_TextChanged(object sender, EventArgs e)
{
remoteSourceListView.Items[IndexSelected].SubItems[1].Text = sourceNameTextBox.Text;
}
public void SourceURL_TextChanged(object sender, EventArgs e)
{
string url = sourceUrlTextBox.Text;
if ((url.StartsWith("http")) || (url.StartsWith("https")) || (url.StartsWith("git")))
{
sourceBranchTextBox.Enabled = true;
}
remoteSourceListView.Items[IndexSelected].SubItems[2].Text = url;
}
public void SourceBranch_TextChanged(object sender, EventArgs e)
{
}
public void SourcesListView_SelectedIndexChanged(object sender, EventArgs e)
{
ListView.SelectedListViewItemCollection selectedRows = remoteSourceListView.SelectedItems;
foreach (ListViewItem row in selectedRows)
{
sourceNameTextBox.Text = row.SubItems[1].Text;
sourceUrlTextBox.Text = row.SubItems[2].Text;
IndexSelected = row.Index;
if (row.SubItems[3].Text != "")
{
sourceBranchTextBox.Enabled = true;
sourceBranchTextBox.Text = row.SubItems[3].Text;
}
}
}
public int IndexSelected
{
get { return _index; }
set { _index = value; }
}
이 코드리스트 뷰에 새 행을 추가 버튼 클릭 이벤트는, 텍스트리스트 뷰 (그렇다고)에 행을 업데이트하는 텍스트 상자의 각 변경 이벤트를 표시하고 선택한 인덱스에 대한 이벤트를 변경 방금 선택한 행의 인덱스를 가져 오는 ListView입니다. 디버깅하는 동안, 나는 행을 클릭 할 때 선택된 인덱스가 바뀐 이벤트에서 올바른 인덱스를 얻는다는 것을 알아 차렸다. 그러나 텍스트 변경 이벤트 중 하나에서 IndexSelected를 호출하면 항상 다른 인덱스가 제공됩니다.
제안 사항?
감사합니다. 솔루션이 완벽하게 작동했습니다. 내가 어떻게 든 저장된 RowIndex 전에 행을 추가하는 것 같아요. – tylerbhughes