c# - 在 UserControl 按钮单击事件中从父窗口调用 public void 方法
问题描述
我的 MainWindow 导航菜单中有一个label
,内容绑定到 SQL 命令,该方法被调用public void HBD_Count()
我有各种我想调用UserControls
的地方,以便可以刷新我的值。Button_Click
public void HBD_Count()
label
我尝试public partial class
从我的 MainWindow 调用我的UserControl
页面,但它不起作用。
这是我在主窗口中的代码,它填充了label
:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Loaded += MyWindow_Loaded;
HBD_Count();
}
public void HBD_Count()
{
try
{
SqlConnection connection = new SqlConnection("Data Source=WINDOWS-B1AT5HC\\SQLEXPRESS;Initial Catalog=CustomerRelations;Integrated Security=True;");
string selectQuery = ("SELECT COUNT(*) AS HBDCount FROM hb_Disputes WHERE (ASSGNTO = 'E099255') AND (STATUS = 3)");
connection.Open();
SqlCommand command = new SqlCommand(selectQuery, connection);
SqlDataReader sqlReader = command.ExecuteReader();
while (sqlReader.Read())
{
HBD_Counts.Content = sqlReader["HBDCount"].ToString();
}
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
这是我UserControl
页面中的代码:
public partial class Import_HighBill : UserControl
{
public string ValueString { get; set; }
public partial class MainWindow : Window { }
public Import_HighBill()
{
InitializeComponent();
AssignList();
}
private void butn_Assign_Click(object sender, RoutedEventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=WINDOWS-B1AT5HC\\SQLEXPRESS;Initial Catalog=CustomerRelations;Integrated Security=True;");
try
{
SqlCommand cmd = new SqlCommand("UPDATE [hb_Disputes] SET ASSGNTO=@ASSGNTO WHERE DSP_ID=@DSP_ID", con);
cmd.Parameters.AddWithValue("@DSP_ID", txt_ID.Text);
// cmd.Parameters.AddWithValue("@DATERSLVD", DBNull.Value);
// Analyst Name
if (cmb_AnalystName.SelectedValue == null)
{
cmd.Parameters.AddWithValue("@ASSGNTO", DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@ASSGNTO", cmb_AnalystName.SelectedValue);
}
con.Open();
cmd.ExecuteNonQuery();
con.Close();
// Here is where I am trying to call the method
HBD_Count();
// Clear Search Fields
cmb_AnalystName.SelectedIndex = -1;
MessageBox.Show("Dispute Assinged!!!");
AssignList();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
解决方案
您可以使用以下代码来完成此任务:
Window parentWindow = Window.GetWindow(this);
((MainWindow)parentWindow).HBD_Count();
如果您需要调用不同的各种方法,MVVM 概念可以简化任务。在这种情况下,您需要在Command中包含方法调用,并且能够使用RelativeSource 绑定来访问它。
推荐阅读
- javascript - MVC C# Redirect() 到字符串 url 不起作用
- java - hbase中特定列的前缀搜索在java中不起作用
- sqlite - SQLite3:从“无效文件格式”中恢复数据库
- mysql - 为什么我的 MySQL 十进制列过早四舍五入?
- c# - 如何将隐藏字段值访问到私有方法中?
- jenkins - 更改的环境变量未反映在 Jenkins 管道中的外壳内部
- oracle - 删除前日志触发错误,我找不到错误
- python - 理解编码为一个热向量的 DNA 序列的一维卷积
- html - 如何在 Chrome 中进行断词:打破所有工作?
- node.js - 处理 postresql 和 nodejs 查询时出错