Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在类中使用MainForm中的对象_C#_Wpf - Fatal编程技术网

C# 在类中使用MainForm中的对象

C# 在类中使用MainForm中的对象,c#,wpf,C#,Wpf,我正在用C#WPF编写一个应用程序 我这里有个小问题 在class.cs中,我有一行: MessageBox.Show("Cancelled sending !"); 我的表格上有一个无线电按钮1 我该怎么做才好 if (radioButton1.IsChecked == true) { MessageBox.Show("Cancelled sending !"); } 因为当我尝试它时,它找不到收音机按钮1 我尝试过不同的方法,但我找不到如何做。如果我理解你的意思是正确的,你是在尝

我正在用C#WPF编写一个应用程序

我这里有个小问题

在class.cs中,我有一行:

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 !");
}