2015-04-22 108 views
0

Я пытаюсь, чтобы событие click переместилось через webBrowser к предварительно заданной строке местоположения +, но я не могу заставить его работать.Кнопка Click URL + String

Моя самая большая проблема, возможно, получить строку из одного события в событие click?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Data.OleDb; 

namespace Ink 
{ 
    public partial class inkForm : Form 
    { 

     public inkForm() 
     { 
      InitializeComponent(); 
     } 

     string searchlink; 

     private void searchbutton_Click(object sender, EventArgs e) 
     { 
      this.AcceptButton = searchbutton; 

      int itemrow = -1; 
      String searchValue = searchtextBox.Text.ToUpper(); 

      if (searchValue != null && searchValue != "") 
      { 
       foreach (DataGridViewRow row in inkGridView.Rows) 
       { 
        if (row.Cells[1].Value.ToString().Equals(searchValue)) 
        { 
         itemrow = row.Index; 
         break; 
        } 
        else if (row.Cells[1].Value.ToString().Contains(searchValue) && itemrow == -1) 
        { 
         itemrow = row.Index; 
        } 
       } 
       if (itemrow == -1) 
       { 
        searchtextBox.BackColor = Color.Red; 
       } 
       else 
       { 
        searchtextBox.BackColor = Color.White; 
        inkGridView.Rows[itemrow].Selected = true; 
        inkGridView.FirstDisplayedScrollingRowIndex = itemrow; 
       } 
      } 
     } 

     private void inkForm_Load(object sender, EventArgs e) 
     { 
      this.hPTableAdapter.Fill(this.inkDataSet.HP); 

     } 

     private void updatebutton_Click(object sender, EventArgs e) 
     { 
      DialogResult dr = MessageBox.Show("Are you sure you want to update the stock level?", "Message", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information); 
      if (dr == DialogResult.Yes) 
      { 
       this.hPTableAdapter.Update(inkDataSet.HP); 
       inkGridView.Refresh(); 
       MessageBox.Show("Record Updated.", "Success!"); 
      } 

     } 
     private void inkGridView_CellContentClick(object sender, DataGridViewCellEventArgs e) 
     { 
      inkGridView.Columns["tonerInkDataGridViewTextBoxColumn"].ReadOnly = true; 
     } 

     private void inkGridView_SelectionChanged(object sender, EventArgs e) 
     { 
      if (inkGridView.SelectedCells.Count > 0) 
      { 
       int selectedrowindex = inkGridView.SelectedCells[0].RowIndex; 

       DataGridViewRow selectedRow = inkGridView.Rows[selectedrowindex]; 

       string searchlink = Convert.ToString(selectedRow.Cells["tonerInkDataGridViewTextBoxColumn"].Value); 
      } 
     } 

     private void orderbutton_Click(object sender, EventArgs e) 
     { 
      string link; 
      string searchlink = "blahblah"; 
      link = "http://store.tindallsb2b.co.uk/storefront/evolution_ProductResults.html?strSearch=" + searchlink; 
      webBrowser.Url = new Uri(link); 

     } 

     private void urlcheckertextbox_TextChanged(object sender, EventArgs e) 
     { 
      urlcheckertextbox.Text = webBrowser.Url.ToString(); 
     } 
    } 
} 

Когда кнопка нажата, она переходит в домен на «неизвестном направлении» страницы на веб-сайте (веб-сайт не принадлежит мне).

Идея состоит в том, чтобы щелкнуть ячейку в DataGridView, которая является кодом продукта, затем нажать кнопку, которая добавляет код продукта в заданный url и загружает строку url + в webBrowser.

+0

у вас есть строка searchlink = «»; но вы никогда не достигаете значения этой переменной. –

+0

Я не знаю, что будет с этим делать. –

+0

, откуда вы должны получить постфикс вашего URL-адреса? –

ответ

2

Ваш vairable searchlink не отображается вашим orderbutton_Click(). Решением было бы объявление varible searchlink вне методов вашего класса. Фактически вы используете совершенно разные переменные (оба называются searchlink) внутри ваших методов. Так, например:

class testclass 
{ 
    string teststring1 = ""; //visible in both methods 

    private void testmethod1() 
    { 
     string teststring2 = ""; //only visible in this method 
     teststring1 = "it works!"; 
    } 

    private void testmethod2() 
    { 
     teststring2 = "this won't compile"; //teststring2 is not visible here 
     teststring1 = "it works, too"; 

     //but what you are doing is: 
     string teststring2 = ""; //new variable (not related to teststring2 from above) 
    } 
} 

И как bkribbs сказал мне, что это называется переменной сферы. Благодаря!

Для решения вашей конкретной проблемы здесь новый код:

string searchlink = ""; 

private void inkGridView_SelectionChanged(object sender, EventArgs e) 
    { 
     if (inkGridView.SelectedCells.Count > 0) 
     { 
      int selectedrowindex = inkGridView.SelectedCells[0].RowIndex; 

      DataGridViewRow selectedRow = inkGridView.Rows[selectedrowindex]; 

      searchlink = Convert.ToString(selectedRow.Cells["tonerInkDataGridViewTextBoxColumn"].Value); 
     } 
    } 

    private void orderbutton_Click(object sender, EventArgs e) 
    { 
     string link; 

     link = "http://store.tindallsb2b.co.uk/storefront/evolution_ProductResults.html?strSearch=" + searchlink; 
     webBrowser.Url = new Uri(link); 

    } 

Я надеюсь, что я получил вашу проблему прямо :)

+0

Комментарии не предназначены для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/75969/discussion-on-answer-by-jibbow-button-click-url-string). – Taryn