我想将一个值从Mainpage传递给Page2。当我单击Button_Click
时,变量“ t”将传递给Page2。
但是,我需要从代码中触发Button_Click
事件,但是随后引发了“ NullReferenceException”。
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
Button_Click(new object(), new RoutedEventArgs());
}
public void Button_Click(object sender, RoutedEventArgs e)
{
string t = "Test";
navigate_page2(t);
}
public void navigate_page2(string t)
{
this.Frame.Navigate(typeof(Page2), t);
}
}
Button_Click(new object(), new RoutedEventArgs());
触发Button_Click
事件以执行操作,除非调用了“ navigate_page2”。
直接单击并从代码触发按钮有什么区别?我猜它一定是“新的RoutedEventArgs”,但我不知道该如何处理...谢谢您的答复!
答案 0 :(得分:1)
请不要直接调用Button_Click
,该方法与XAML中的事件相关联。
如果要重用Button_Click
事件中的代码,可以将其打包为调用方法。
更新
,但是会引发“ NullReferenceException”。
问题出在this.Frame
中。对于您当前的页面,this.Frame
不存在。您需要在xaml中创建一个子框架。
<Grid>
<Frame x:Name="MainFrame"/>
</Grid>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
btn_handle();
}
public void Button_Click(object sender, RoutedEventArgs e)
{
btn_handle();
}
public void btn_handle()
{
string t = "Test";
navigate_page2(t);
}
public void navigate_page2(string t)
{
MainFrame.Navigate(typeof(Page2), t);
}
}
最诚挚的问候。
答案 1 :(得分:0)
据我所知,您正在尝试将值从一页传递到另一页,下面以两个表单为例,您需要通过单击按钮的触发将一个值从表单传递到另一表单。
Form2
public partial class Form2 : Form
{
public event EventHandler TextEvent;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.Hide();
if (TextEvent != null)
{
TextEvent(label1.Text, null);
}
}
}
Form1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 obj = new Form2();
obj.Show();
obj.TextEvent += obj_TextEvent;
}
void obj_TextEvent(object sender, EventArgs e)
{
label1.Text = sender.ToString();
}
}
我在这里做的是我在Form2中创建了一个事件,该事件在单击Form2的Button1时触发,并且数据作为发送方传递到Form1,其中,Form2 obj启动了该事件,并将Form1的label1设置为label1.Text = sender.ToString();