我如何实际将方法中的值传递给另一个方法?我为我在c#中缺乏知识而道歉。到目前为止我所做的一切都行不通。我希望将值('MaxHeight')从Page()传递给来自fullNameControlLoaded()的'MaxHeight'。
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;
}
答案 0 :(得分:2)
你还没说清楚什么不起作用,但是这个:
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
的值...您希望在哪里初始化它?
答案 1 :(得分:0)
您可以将“MaxHeight”设置为类中的属性,然后Page构造函数可以设置它的值,然后当fullNameControl_Loaded函数运行时,该属性的值将是页面构造函数的更新值。
private int maxHeight = 0; public Page(string _setArticles,string _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;
}
答案 2 :(得分:0)
这不是它的完成方式,在类范围内声明你的MaxHeight
字段然后你可以从类中的任何地方访问它。不要修改生成的事件。