2016-01-20 4 views
0

У меня есть код на моей кнопке обзора. Как написать код для кнопки отмены ввода.C# Кнопка отмены входных ящиков не работает

private void btnbrowse_Click(object sender, EventArgs e) 
{ 
    String sf_no = Microsoft.VisualBasic.Interaction.InputBox(
     "You are uploading File For SF NO. ", "Information", def, -1, -1); 

    ofd.ShowDialog(); 
    ofd.Multiselect = true; 
    string[] result = ofd.FileNames; 

    foreach (string y in result) 
    { 
     String path = y.Substring(0, y.LastIndexOf("\\")); 
     String filename = y.Substring(y.LastIndexOf("\\")); 
     string[] row = new string[] { sf_no,path, filename }; 
     dataGridView2.Rows.Add(row); 
    } 
} 
+1

Вы должны использовать 'System.IO.Path.GetDirectoryName()' и 'System.IO.Path.GetFileName()' методы вместо 'у .SubString() 'призывает сделать его более безопасным. –

+0

Я написал, но он дает ошибку – shweta

+0

Path = System.IO.Path.GetDirectoryName(); имя_файла = System.IO.Path.GetFileName(); string [] row = new string [] {sf_no, path, filename}; dataGridView2.Rows.Add (строка); ' – shweta

ответ

1

Об отмене InputBox, возвращаемое значение является пустой строкой, так что ваш код будет

if (sf_no!="") 
{ 
//ok stuff here, including the showdialog logic as shown below 
} 
{ 
//cancel stuff here 
} 

С ofd.ShowDialog также может быть отменен ваш код должен быть:

if (ofd.ShowDialog()==DialogResult.OK) 
{ 
//do stuff on OK button 
} 
else 
{ 
//do stuff on Cancel button 
} 

Либо вызовите ofd.Multiselect = true;до, вызывая ShowDialog() или установите его в поле «Свойства», если у вас всегда будет Multiselect.

Таким образом, новый код теперь:

private void btnbrowse_Click(object sender, EventArgs e) 
    { 

     String sf_no = Microsoft.VisualBasic.Interaction.InputBox("You are uploading File For SF NO. ", "Information", def, -1, -1); 

     if (sf_no!="") //we got the sf_no 
     { 
      ofd.Multiselect = true; 
      if (ofd.ShowDialog()==DialogResult.OK)//user select file(s) 
      { 

       string[] result = ofd.FileNames;   

       foreach (string y in result) 
       { 

        String path = System.IO.Path.GetDirectoryName(y); 
        String filename = System.IO.Path.GetFileName(y); 
        string[] row = new string[] { sf_no,path, filename }; 
        dataGridView2.Rows.Add(row); 
       } 
      } 
      else 
      { 
      //handle what happen if user click cancel while selecting file 
      } 
     } 
     else 
     { 
     //handle what happen if user click cancel while entering SF NO 
     } 





    } 
+0

Можете ли вы, пожалуйста, представить, какой код (из моей очереди) мне нужно добавить, если еще условие – shweta

+0

Отредактировано моим ответом, чтобы показать, каким должен быть ваш новый код. – Martheen

+0

Большое вам спасибо – shweta

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