2013-02-12 8 views
0

У меня есть форма с listView, которая заполняется вызовом метода showCheckedInFiles(). Метод работает отлично, когда я добавляю простую кнопку в форму и нажимаю ее, которая вызывает метод, но когда я вызываю метод из другого места, он не заполняет мой listview.Почему мой метод не работает?

Пожалуйста, помогите мне с ума сойти. Первый метод, приведенный ниже, вызывается из другого класса, и это показано ниже, и я включил метод кнопки для ссылки, как я уже сказал, кнопка работает отлично, но мне нужно иметь возможность вызвать метод без щелчка кнопка !!:

public void openProject(string projectname) 
{ 
    projectName = projectname; 
    string userDir = CSDBpath + projectname + "\\checkedOUT\\" + userName; 
    if (!Directory.Exists(userDir)) //Does the user's directory exist, if not, create it 
    { 
     Directory.CreateDirectory(userDir); 
    } 
    showCheckedInFiles(); 
} 

private void button3_Click(object sender, EventArgs e) 
{ 
    showCheckedInFiles(); 
} 

метод, который вызывает выше:

private void buttonOpenProject_Click(object sender, EventArgs e) 
{ 
    ListView.SelectedListViewItemCollection mySelectedItems; 
    mySelectedItems = listView1.SelectedItems; 
    Form1 mainform = new Form1(); 
    string myProject = ""; 

    foreach (ListViewItem item in mySelectedItems) 
    { 
     myProject = item.Text; 
    } 

    mainform.openProject(myProject); 
    //mainform.showCheckedInFiles(); 
    this.Close(); 
} 
+0

Это событие не стреляет. Я отчасти потерян, вы отлаживали свой код. Иногда простая отладка может решить сложные проблемы. –

+0

Вы не запускаете 'Show' в своей форме, насколько я могу видеть –

+0

Боковое примечание - вы используете' projectname', если вы хотите использовать 'projectName' при инициализации 'userDir' в' openProject (...) '. Вы можете избежать путаницы и избыточности, избавившись от 'projectName' вообще, предполагая, что вы не используете его в другом месте. – Sam

ответ

5

в buttonOpenProject_Click создать новый скрытый экземпляр Form1, который не связан с, по-видимому, уже существующим, который уже показан.

+0

Да, я уже почти весь день отлаживал попытки отработать то, что происходит. Я только перечислил несколько методов в надежде, что вы, ребята, можете показать мне, где я делаю ошибку школьного мальчика. Но, похоже, это не совсем очевидно. Я должен буду перечислить больше кода в надежде, что кто-то может помочь, это сводит меня с ума. Я сделаю это завтра, так как теперь у меня нет доступа. – Daedalus

+0

@ Abzy - да, я догадался, что foreach был пустой тратой времени, особенно если пользователь должен выбрать только один элемент из списка, но я не мог сразу разобраться, как конвертировать коллекцию только в выбранный элемент, поэтому я использовал это как временное решение для среднего времени. Я не думаю, что это моя проблема, хотя это так. – Daedalus

0

Переместить метод ShowCheckInFiles в отдельный класс и в качестве параметра перейти в listview. Это должно позволить вам использовать метод независимо от того, где вы его вызываете.

, например ...

SomeClass.ShowCheckInFIles (ListView1);

Смежные вопросы