无法在类之间传递数据
问题描述:
我正在使用winform开发基于VS2012的Kinect应用程序。在我尝试了几种方法之后,我仍然无法将价值从一个班级传递给另一个班级。无法在类之间传递数据
基本上我有三类,一个公众MainWindow()
,公共部分FaceTrackingViewer()
,和公共SkeletonFaceTracker()
。最后一节课是FaceTrackingViewer()
课。
在SkeletonFaceTracker(),我有以下几点:
public bool lastFaceTrackSucceeded { get; set; }
internal void OnFrameReady(KinectSensor kinectSensor, ColorImageFormat colorImageFormat, byte[] colorImage, DepthImageFormat depthImageFormat, short[] depthImage, Skeleton skeletonOfInterest)
{
// something else
if (this.faceTracker != null)
{
this.lastFaceTrackSucceeded = frame.TrackSuccessful; //where it's set to be true.
//something else
}
}
我也试图改变到第一行:
public bool lastFaceTrackSucceeded;
public bool LastFaceTrackSucceeded
{
get { return lastFaceTrackSucceeded; }
private set { lastFaceTrackSucceeded = value; }
}
我认为两者是相同的,但。
在主窗口(),我有:
public partial class MainWindow : Window
{
//some other irrelevant code snippets
private FaceTrackingViewer.SkeletonFaceTracker skeletonFaceTracker = new FaceTrackingViewer.SkeletonFaceTracker();
private void button_faceOnly_Click(object sender, RoutedEventArgs e)
{
bool faceTrackSucceeded = skeletonFaceTracker.lastFaceTrackSucceeded;
// if I use the second structure in SkeletonFaceTracker(), it should be:
// bool faceTrackSucceeded = skeletonFaceTracker.LastFaceTrackSucceeded;
if (faceTrackSucceeded == true)
{
//do something
}
}
}
然而,bool faceTrackSucceeded
总是false
,即使在SkeletonFaceTracker()
的lastFaceTrackSucceeded
或LastFaceTrackSucceeded
是true
。我很困惑,不知道哪里出了问题。
请注意,所有视频处理和脸部追踪操作都发生在FaceTrackingViewer()
类中。我只是想将一些参数和结构传递给MainWindow()
。
谢谢
答
一两件事第一 - 我认为你可以将这个变量lastFaceTrackSucceeded
公共纯粹是出于测试目的。在您的示例中,定义属性的两种方法在功能上是相同的。
我能想到的唯一的其他事情是,您将LastFaceTrackSucceeded
设置为不同的实例的SkeletonFaceTracker
。你没有提供足够的代码让我确定这一点,但如果你有两个(或更多)实例,那么很容易让它们混淆起来。
你确定只有一个'SkeletonFaceTracker'被实例化吗?您不显示字段设置为true的位置。 – YotaXP 2013-03-16 15:51:46
是的,它在SkeletonFaceTracker()类中设置为true,但我没有在帖子中显示它。然后让我修改它。 – Shiyu 2013-03-16 15:57:31
YotaXP询问'SkeletonFaceTracker'的实例是否在'MainWindow'中被设置为true。在'MainWindow'中创建的'skeletonFaceTracker'是实际使用的吗? – JLRishe 2013-03-16 16:06:04