C# 在类中使用MainForm中的对象
我正在用C#WPF编写一个应用程序 我这里有个小问题 在class.cs中,我有一行:C# 在类中使用MainForm中的对象,c#,wpf,C#,Wpf,我正在用C#WPF编写一个应用程序 我这里有个小问题 在class.cs中,我有一行: MessageBox.Show("Cancelled sending !"); 我的表格上有一个无线电按钮1 我该怎么做才好 if (radioButton1.IsChecked == true) { MessageBox.Show("Cancelled sending !"); } 因为当我尝试它时,它找不到收音机按钮1 我尝试过不同的方法,但我找不到如何做。如果我理解你的意思是正确的,你是在尝
MessageBox.Show("Cancelled sending !");
我的表格上有一个无线电按钮1
我该怎么做才好
if (radioButton1.IsChecked == true)
{
MessageBox.Show("Cancelled sending !");
}
因为当我尝试它时,它找不到收音机按钮1
我尝试过不同的方法,但我找不到如何做。如果我理解你的意思是正确的,你是在尝试访问class.cs中的radioButton值,对吗?如果是这样,您可以创建一个公共属性,它封装您的radiobutton checked属性 这可能看起来像:
public bool IsRadioButtonChecked
{
get{return radioButton1.IsChecked;}
}
在class.cs中,您需要窗口的一个实例。在表单上创建的单选按钮存储在MainForm类的一个私有变量中。因此,其他类无法访问它 您可以将其转换为公共变量,但这不是一种很好的方法,而且在任何情况下,当您在表单上添加/删除/调整控件大小时,表单设计器都会覆盖它 更好的解决方案是将对单选按钮的引用通过构造函数传递给其他类,或者作为检查单选按钮状态的方法的参数(如果表单调用了它) 例如:
public class MyClass {
private mRbutton;
public MyClass(RadioButton rbutton) {
mRbutton = rbutton;
// Rest of the construction code...
}
//
// ... Rest of the class code ...
//
public void MessageShowingMethod() {
if (mRbutton.IsChecked == true) {
MessageBox.Show("Cancelled sending !");
}
}
}
试试这个吧。以您的主要形式:
if (radioButton1.IsChecked == true)
{
int checked = 1;
}
callMyMethod(checked);
然后在你的课堂上。cs:
public callMyMethod(int checked)
{
if (checked == 1)
{
MessageBox.Show("Cancelled sending !");
}
else
{
MessageBox.Show("Something else");
}
}
在使用WPF时,我们有
Window
和UserControl
类等。这些是分部类,这意味着它们中有多个文件。有一个.xaml
文件,我们在其中定义UI,还有一个.xaml.cs
文件,我们可以在其中访问在相关.xaml
文件中定义的命名UI元素。您不应该访问任何其他类中的UI元素
要访问代码隐藏文件中的UI元素,必须在.xaml
文件中对其进行命名:
<RadioButton Name="RadioButton" />
同样,您不应该访问任何其他类中的UI元素。只是为了确保:我们真的在谈论WPF应用程序吗?如果是,请发布您的XAML。另外,当你说“class.cs”时,你是指class.xaml.cs吗?不,我的意思是:右键单击你的项目->添加->新建项->Class1.cs。那么,你的类根本不知道单选按钮的存在。您正在尝试MVVM方法吗?例如,class.cs是否充当视图模型?抱歉,您是否尝试在XAML中将名称更改为x:Name?@progpow这不会有帮助,因为他甚至没有使用codebehind。WPF RadioButton似乎没有公开选中的属性,只有选中的属性。抱歉。把WinForms和WPFIf搞混了如果他在做一个windows窗体项目,这是正确的。请注意,当然它也可以在wpf中工作,但它并不真正符合整个mvvm的要求,是吗?
if (RadioButton.IsChecked)
{
MessageBox.Show("Cancelled sending !");
}