我想尝试编程Android设备,所以我按照Android网站的指示,安装了sdk,java sdk和eclipse.我的计算机是Windows 7 64位,但我已经安装了32位Java SDK和Eclipse,因为我听说64位版本存在问题.
我正在运行最新版本的Android sdk,4.0 R15.
我相信遵循了所有的安装说明,但是当我加载一个样本(在这种情况下为Lunar Lander)时,它会加载模拟器,但不会安装应用程序.当我使用"adb devices"时,ADB没有显示列出的模拟器,eclipse中的DDMS透视图也没有检测到任何设备.在模拟器中,我已在开发人员区域中激活了USB调试设置.
我尝试重新启动adb服务器,并重新安装了几次.
我甚至复制了一个人在youtube教程中为hello world程序做了什么,但它仍然无法加载到设备上.
有没有人知道如何让模拟器和eclipse说话,所以我可以实际运行和调试程序?
是否可以将多个枚举组合在一起?以下是我希望看到的代码示例:
enum PrimaryColors
{
Red,
Yellow,
Blue
}
enum SecondaryColors
{
Orange,
Green,
Purple
}
//Combine them into a new enum somehow to result in:
enum AllColors
{
Red,
Orange,
Yellow,
Green,
Blue,
Purple
}
Run Code Online (Sandbox Code Playgroud)
无论它们是什么顺序,或者它们的支持数量是什么,我只是希望能够将它们组合起来.
对于上下文,这是因为我正在处理的程序的多个类将具有与它们所做的相关联的枚举.我的主程序将读取每个支持类中可用的所有枚举,并创建可用命令的可用枚举的主列表(枚举用于).
编辑:这些枚举的原因是因为我的主程序正在读取要在特定时间执行的命令列表,所以我想读入文件,看看其中的命令是否与我的一个枚举相关联,以及如果是,请将其放入要执行的命令列表中.
一个相当简单的问题(我认为),但我似乎没有看到答案.我知道有些值是通过值传递的(比如int和long),而其他值是通过引用传递的(比如字符串),当你将它们传递给函数时.
在我的程序中,我使用后台工作程序,以便在我们在后台执行长时间的过程时GUI不会锁定.我需要将数据从另一个文件传递回UI线程,所以我一直在使用事件.现在我需要将一个字符串数组列表发送回GUI线程来处理,我担心它将如何处理.基本上,在工作线程中,我有一个循环,它将填充列表,通过事件处理程序将其发送回GUI,然后清除它,以便它可以在下一次循环中填充它并重新开始.
我担心当我这样做时,如果列表是通过引用传递的,那么在UI线程上,我认为它会在读取中间被清除,因为工作线程仍将在后台清除它.在这种情况下,传递将是更可取的,我可以找到强制它的方法(复制到某个持有者数组或添加互斥或类似的东西),但我认为知道事件参数是否通过传递是很好的一般的引用或值,或者它与方法是否相同,并且它会在通常传递参数时传递它们?
基本上,我有一个用C#中的Visual Studio 2010 Express编写的项目,然后我尝试使用Visual Studio 2012 Express和该文件,现在VS2010说:
"所选文件是一个解决方案文件,但是由此应用程序的较新版本创建,无法打开."
现在,当我查看这个时,微软表示,如果你不使用任何VS2012特定的东西,你仍然可以使用2010.好吧,我已经尝试了VS2012中的内置测试,这是VS2012特有的唯一的东西,但从我的项目(测试项目)删除它,仍然留下它说它是由更新的创建版.
那么,你如何制作VS2012修改的VS2010解决方案再次与VS2010配合使用?
在我的程序中,我基本上是在读取文件,对其进行一些处理,然后将其作为内存流传递回主程序,这将由流读取器处理.这将全部由我的主要旁边的班级处理.
问题是,当我从另一个类中的my方法返回内存流时,"canread"变量设置为false,从而导致streamreader初始化失败.
下面是一个问题发生的例子(虽然在这里我写的是另一个类中的内存流,但是当我传回它时仍然会导致相同的错误.
在名为"Otherclass"的类中:
public static MemoryStream ImportantStreamManipulator()
{
MemoryStream MemStream = new MemoryStream();
StreamWriter writer = new StreamWriter(MemStream);
using (writer)
{
//Code that writes stuff to the memorystream via streamwriter
return MemStream;
}
}
Run Code Online (Sandbox Code Playgroud)
函数调用主程序:
MemoryStream MStream = Otherclass.ImportantStreamManipulator();
StreamReader reader = new StreamReader(MStream);
Run Code Online (Sandbox Code Playgroud)
当我在"返回MemStream"上放置一个断点时,"CanRead"属性仍然设置为true.一旦我执行它返回到我的main函数,并将返回的值写入MStream,"CanRead"属性设置为false.然后,这会在StreamReader中导致异常,表示无法读取MStream(如指示的属性).数据应该在流缓冲区中,但我无法理解它.
如何设置它以便"CanRead"在返回主体后报告为真?或者我误解了MemoryStream的工作方式以及如何完成我想做的事情?
假设我有一个包含2个系列的图表.然后对于每个系列,我都有一个复选框,说明我是否想要查看它们.假设我最初绘制两个,然后想要隐藏它们中的任何一个.做这个的最好方式是什么?
我知道我可以Clear(),然后AddXY()他们回来,但有更快的方法吗?
我的想法是:
1.根据复选框将visibility属性设置为true/false.
没有可见性属性
2.将点集合复制到变量,清除并重新放入.
Series[].Points是只读的
3.将系列复制到变量,清除点,然后放回.
显然它将系列存储为参考当我尝试这个,我找不到复制命令.
所以我显然是错误的做法.你如何动态地允许图表隐藏不同的系列?
如果我有一个带有2 chartAreas的图表控件,默认情况下图表控件会将chartAreas放在彼此的顶部,使得每个区域占据图表控件可用大小的50%.
有没有办法改变chartAreas的百分比,以便我可以说,顶部图表占据该区域的75%,而底部图表占25%?
这是一个相当简单的问题,但每次我尝试找到答案时,它都会一直显示有关Windows计划任务的事情,而这不是这个问题.
说我的程序基本上是这样的:
void StartDoingThings()
{
//At Specific System.DateTime
DoSomething()
//At another specific System.Datetime
DoSomethingElse()
}
Run Code Online (Sandbox Code Playgroud)
我应该用什么来代替那些注释来使这些方法在不同的日期时间运行.
我可以使用Thread.Sleep()甚至System.Threading.Timers并根据(DateTimeOfEvent - DateTime.Now)计算间隔,但是只是说些什么(假设程序仍在运行):在9:30: 2012年11月30日上午00点,执行方法DoAnotherThing()?
在我的应用程序中,我有两个图形,一个在UI上方(在显示器的顶部附近).两个图的水平轴指的是相同的时间范围.它们的垂直轴虽然可能非常不同,所以我想把它们保持为图形.它们提供免费信息,因此,我希望它们的水平轴保持同步,即使它们的垂直轴标签可以移动.
在这两种情况下,包含这些的图表控件具有相同的宽度,只是内部的数据被移位.
我目前有这个:
10000|
8000|
6000|
4000|
2000|
0 ---------------------------------
0 10
Long Label 3|
Long Label 2|
Long Label 1|
Long Label 0 -----------------------
0 10
Run Code Online (Sandbox Code Playgroud)
我想要这个:
10000|
8000|
6000|
4000|
2000|
0 ---------------------------------
0 10
Long Label 3|
Long Label 2|
Long Label 1|
Long Label 0 ---------------------------------
0 10
Run Code Online (Sandbox Code Playgroud)
它们最初是独立的Chart MSChart控件.我尝试将它们放在与不同图表区域相同的图表控件中,但它没有解决问题.
我怎么能实现这个目标?我最好在单独的图表控件上喜欢它们,但如果必须,我可以选择单独的Chart区域.
可能重复:
从另一个线程更新进度栏
在我的程序中,我想将非GUI函数分离到另一个类,并在主类中保留与GUI相关的内容.但是,当工作者类中的一个工作方法正在执行其工作时,我遇到了更新进度条的问题.我知道我将不得不在这里使用多线程,但我不明白如何.我可能只是缺少简单的东西,但是当我查找有关它的信息时,似乎大多数教程都会讨论细节,但不能很好地解释大局.我部分理解调用和委托命令是什么,但我真的不明白它们是如何交互的.
下面是我要做的事情的精简版.如何修改此更新进度条,但保持窗口响应和重新绘制?
主要表格类:
public partial class Form1 : Form
{
time_waster thing = new time_waster();
public Form1()
{
InitializeComponent();
progressBar1.Minimum = 0;
progressBar1.Maximum = 100;
}
private void button1_Click(object sender, EventArgs e)
{
thing.something_that_takes_a_while();
}
}
Run Code Online (Sandbox Code Playgroud)
单独的工人类:class time_waster {public time_waster(){}
public void something_that_takes_a_while()
{
int delay = 200;
for (int i = 0; i < 100; i++)
{
Thread.Sleep(delay);
//appropriate code to update the progress bar for each iteration of the for loop.
}
}
}
Run Code Online (Sandbox Code Playgroud) 编辑: 这是一个示例程序,我知道linq中有一个sum运算符.但是,我试图特别询问如何将指针传递给属性来执行复杂的操作,而不一定是这个求和算法.
可以说我有这样一个类:
class Point
{
double x {get; set;}
double y {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
在我的主程序中,我有2个功能.
double function1(List<Point> PointList)
{
double sum = 0.0;
foreach(Point p in PointList)
{
sum += p.x;
}
return sum;
}
double function2(List<Point> PointList)
{
double sum = 0.0;
foreach(Point p in PointList)
{
sum += p.y;
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
这些函数完全相同,除了一个是对X值求和,另一个是对Y值求和.由于它们非常相似,我想将它们组合起来,以便我基本上传入点列表,以及识别我想要进行基于X或Y的计算的东西.
我知道我可以放入一个switch语句并告诉它是基于枚举的X或Y,还是定义为告诉它做X或Y的数字.如果这是一个正常的函数,我假设我可以使用s委托,但这是一个属性,所以我不确定如何转换.
那么如何将这些功能组合成以下内容:
double bothFunctions(List<Point> PointList, var propertyToUse)
{
double sum = 0.0;
foreach(Point p in PointList)
{
sum += p.propertyToUse;
}
return sum; …Run Code Online (Sandbox Code Playgroud) 我读过一些关于在面向对象编程中使用 getter/setter 的内容,并且许多此类资源表明它们应该很少使用。引用那篇文章中的一句话说:
不要询问完成工作所需的信息;询问拥有信息的对象来为您完成这项工作。
虽然原则上这听起来不错,但我不太确定如何最好地实施它。假设我有一个描述汽车的课程。在该类中,假设该类中存储的这辆车的品牌是“丰田”。现在我有一个 GUI 想要显示这是一辆“丰田”。如果没有吸气剂,如何做到这一点?
即使我抽象出“Toyota”存储为字符串并返回一个已写入“Toyota”的 TextBox,这听起来充其量也像是原始属性的包装形式的 getter。我只是认为像 TextBoxes 这样的东西应该只在 GUI 类中,而不是在像我的汽车类这样的辅助类中。
我有一个文本文件,其中包含我要解析的固定长度表。但是,文件的开头是有关何时生成此表的一般信息(IE 时间、数据等)。
为了阅读此内容,我尝试创建一个FileStream,然后使用 . 读取该文件的第一部分StreamReader。我从文档的顶部解析出我需要的内容,然后当我完成时,将流的位置设置为结构化数据的第一行。
然后我将 a 附加TextFieldParser到流(使用固定长度表的适当设置),然后尝试读取该文件。在第一行,它失败了,在ErrorLine属性中,它列出了表第三行的后半部分。我浏览了一下,发现它位于第一行,但ErrorLine酒店却暗示情况并非如此。
调试时,我发现如果在StreamReader.ReadLine()将其附加TextFieldParser到流后尝试使用我的方法,前两行显示正常。然而,当我阅读第三行时,它返回一行,该行从第三行的前半部分开始(并在文本所在的位置停止ErrorLine)附加文档中稍后的部分内容。如果我在附加之前尝试此操作TextFieldParser,它会很好地读取所有 3 行。
我有一种感觉,这与我将 2 个读者绑定到同一个流有关。我不知道如何使用结构化部分和非结构化部分来阅读此内容,而不只是自己标记这些行。我可以做到这一点,但我假设我不是第一个想要以一种方式读取流的一部分,并以另一种方式读取流的后续部分的人。
为什么会这样跳过,如何读取不同格式的文本文件?
例子:
Date: 3/1/2013
Time: 3:00 PM
Sensor: Awesome Thing
Seconds X Y Value
0 5.1 2.8 55
30 4.9 2.5 33
60 5.0 5.3 44
Run Code Online (Sandbox Code Playgroud)
为这个简化示例定制的代码:
Boolean setupInfo = true;
DataTable result = new DataTable();
String[] fields;
Double[] dFields;
FileStream stream = File.Open(filePath,FileMode.Open);
StreamReader reader = new …Run Code Online (Sandbox Code Playgroud) c# ×12
mschart ×3
.net ×2
stream ×2
accessor ×1
adb ×1
android ×1
arguments ×1
charts ×1
combinations ×1
datetime ×1
ddms ×1
eclipse ×1
enums ×1
events ×1
filestream ×1
fixed-width ×1
memorystream ×1
oop ×1
progress-bar ×1
properties ×1
streamreader ×1
timer ×1
winforms ×1