以编程方式触发事件并将值传递给第二页?
Trigger event programmatically and pass value to second page?
我想将一个值从 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" 时除外。
直接点击按钮和代码触发按钮有什么区别?我想这是 "new RoutedEventArgs" 不知何故,但我不知道如何处理...谢谢您的任何回复!
请不要直接调用Button_Click
,此方法与XAML中的事件相关联。
如果想复用Button_Click
事件中的代码,可以打包成方法调用。
更新
but then a “NullReferenceException” is thrown.
问题出在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);
}
}
此致。
据我所知,您正在尝试将一个值从一个页面传递到另一个页面,让我们以两种形式为例,您需要通过单击任何按钮将一个值从一个形式传递到另一个形式。
表格2
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);
}
}
}
表格 1
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();
我想将一个值从 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" 时除外。
直接点击按钮和代码触发按钮有什么区别?我想这是 "new RoutedEventArgs" 不知何故,但我不知道如何处理...谢谢您的任何回复!
请不要直接调用Button_Click
,此方法与XAML中的事件相关联。
如果想复用Button_Click
事件中的代码,可以打包成方法调用。
更新
but then a “NullReferenceException” is thrown.
问题出在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);
}
}
此致。
据我所知,您正在尝试将一个值从一个页面传递到另一个页面,让我们以两种形式为例,您需要通过单击任何按钮将一个值从一个形式传递到另一个形式。
表格2
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);
}
}
}
表格 1
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();