2 votes

Appelez la méthode dans une fonction interne c#

Je veux passer une valeur de chaîne de la fonction à la fonction interne.

private void datagrid_customer_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    for (int i = 0; i < datagrid_customer.Items.Count; i++)
    {
        if (Convert.ToString((datagrid_customer.SelectedCells[3].Column.GetCellContent(datagrid_customer.SelectedItem) as TextBlock).Text) == Convert.ToString((datagrid_customer.SelectedCells[1].Column.GetCellContent(datagrid_customer.Items[i]) as TextBlock).Text))
        {
            ...
            string a = (b + c + d).ToString();       
        }
 }

Je veux passer a à une autre fonction

datagrid_customer.SelectAll();

for (int i = 0; i < datagrid_customer.Items.Count; i++)
{
    if (Convert.ToString((datagrid_customer.SelectedCells[43].Column.GetCellContent(datagrid_customer.Items[i]) as TextBlock).Text) == "0")
    {
        ...
         txt_f1.Text = a ;
    }
}

J'ai besoin de txt_f1.text = a mais je n'ai pas accès à utiliser a.

que dois-je faire?

1voto

Si vous avez créé l'autre fonction, vous pouvez la passer en paramètre à votre fonction comme:

int OtherFunction(string a)
{
    // votre code ici
}

et ensuite simplement appeler votre fonction comme:

OtherFunction(a);

Si l'autre méthode n'est pas quelque chose que vous avez créé comme une méthode d'un événement de clic ou similaire, alors vous devriez rendre votre variable globale pour qu'elle soit valide dans les deux scopes:

public string a = ""; // dans votre classe principale

puis:

void function1()
{
    //quelques codes
    a = "une certaine valeur";
    //quelques code
}

int OtherFunction()
{
    // vous avez accès à a ici aussi
    textBox1.Text = a;
}

EDIT: (un exemple de déclaration de la variable dans votre propre exemple)

string a = "";  // la déclarer ici avant (en dehors) de la méthode pas à l'intérieur
private void datagrid_customer_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    for (int i = 0; i < datagrid_customer.Items.Count; i++)
    {
        if (Convert.ToString((datagrid_customer.SelectedCells[3].Column.GetCellContent(datagrid_customer.SelectedItem) as TextBlock).Text) == Convert.ToString((datagrid_customer.SelectedCells[1].Column.GetCellContent(datagrid_customer.Items[i]) as TextBlock).Text))
        {
            ...
            a = (b + c + d).ToString();       
        }
 }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X