Определите> 2 параметра и передайте значения от одного метода другому - PullRequest
0 голосов
/ 30 июля 2011

Как на самом деле передать значение из метода в другой метод?Я прошу прощения за отсутствие знаний в C #.То, что я сделал до сих пор, не может работать.Я хочу передать значение MaxHeight из Page () в MaxHeight из fullNameControlLoaded ().

Page.xaml.cs:

public Page(string _setArticles, string _setLength)
{
    InitializeComponent();

    //testing!
    //send value to method 'fullNameControl_Loaded' (summary length of each ListBox item)
    int MaxHeight = 0;
    if (!string.IsNullOrEmpty(_setLength))
    {
        if (_setLength.Contains("_3"))
            MaxHeight = 30;
            fullNameControl_Loaded(null, null, MaxHeight);
    }      
}

private TextBlock m_textBlock;
void fullNameControl_Loaded(object sender, RoutedEventArgs e, int MaxHeight)
{
    m_textBlock = sender as TextBlock;
    m_textBlock.MaxHeight = MaxHeight;   
}

Ответы [ 3 ]

2 голосов
/ 30 июля 2011

Вы не дали понять, что не работает, но это:

if (_setLength.Contains("_3"))
    MaxHeight = 30;
    fullNameControl_Loaded(null, null, MaxHeight);

похоже, должно быть так:

if (_setLength.Contains("_3"))
{
    MaxHeight = 30;
    fullNameControl_Loaded(null, null, MaxHeight);
}

Однако в этот момент sender будет нулевым, поэтому fullNameControl_Loaded() выдаст NullReferenceException.

Кажется маловероятным, что вы действительно хотите изменить значение m_textBlock в методе ... где вы ожидали, что это будет инициализировано?

0 голосов
/ 30 июля 2011

Это не так, как это делается, объявите ваше поле MaxHeight в области видимости класса, тогда вы сможете получить к нему доступ из любого места внутри класса.не изменять сгенерированное событие.

0 голосов
/ 30 июля 2011

Вы можете установить «MaxHeight» как свойство в своем классе, затем конструктор страницы может установить его значение, а затем, когда функция fullNameControl_Loaded будет запущена, значением свойства будет обновленное значение из конструктора страницы.

private int maxHeight = 0;общедоступная страница (строка _setArticles, строка _setLength) {InitializeComponent ();

        //testing!!!!
        //send value to method 'fullNameControl_Loaded'
        //(summary length of each ListBox item)
        maxHeight = 0;
        if (!string.IsNullOrEmpty(_setLength))
        {
            if (_setLength.Contains("_3"))
                maxHeight = 30;
                fullNameControl_Loaded(m_textBlock, null, MaxHeight);
        }      
    }

   private TextBlock m_textBlock;
    void fullNameControl_Loaded(object sender, RoutedEventArgs e, int MaxHeight)
    {
        m_textBlock = sender as TextBlock;
        m_textBlock.MaxHeight = maxHeight;   
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...