我需要自动检测设备分辨率,现在我有一个全局var&hardwire分辨率:
Public gDeviceRes As String = "640"
'Public gDeviceRes As String = "320"
Run Code Online (Sandbox Code Playgroud)
然后重新编译每个设备,有没有人有一个快速snippit的代码?
我的目标是使用可在Windows Mobile和"普通"桌面Windows上运行的UI构建应用程序.优先考虑的是它在Windows Mobile下"看起来很好",而对于桌面Windows,如果它失真则可以.在我投入几天尝试之前,我想听听是否可以开始.这个问题有几个部分:
.NET Compact Framework是"正常"(请编辑).NET Framework的子集吗?如果没有,MSDN在.NET Compact Framework中的类上是否有任何信息,但在"普通"(再次,请,编辑)框架中没有?
两个框架中共享类的行为是否相同?
是否可以为两个平台提供单个Visual Studio 2005解决方案/项目?如果是,请如何设置?
还有其他意见和建议吗?任何相关链接?
我想做以下事情:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct SomeStruct
{
public byte SomeByte;
public int SomeInt;
public short SomeShort;
public byte SomeByte2;
}
Run Code Online (Sandbox Code Playgroud)
是否有替代方案,因为紧凑框架不支持Pack?
更新:显式设置结构并为每个提供FieldOffset都不起作用,因为它不会影响结构的打包方式
Update2:如果您尝试以下操作,CF程序甚至不会运行,因为结构的打包方式如下:
[StructLayout(LayoutKind.Explicit, Size=8)]
public struct SomeStruct
{
[FieldOffset(0)]
public byte SomeByte;
[FieldOffset(1)]
public int SomeInt;
[FieldOffset(5)]
public short SomeShort;
[FieldOffset(7)]
public byte SomeByte2;
}
Run Code Online (Sandbox Code Playgroud)
我知道这似乎很难相信,但如果你尝试它,你会看到.将它添加到CF项目并尝试运行它,您将获得TypeLoadException.将偏移分别更改为0,4,8,10并且它将起作用(但是大小最终为12).
我希望也许某人有一个使用反射的解决方案可能单独编组每个字段类型的大小(涉及递归以处理结构或类型数组中的结构).
我有一个签名的图像我试图保存为1 bpp位图以节省文件空间.完整的.NET Framework具有枚举PixelFormat.Format1bppIndexed,但.NET Compact Framework不支持它.
有没有人发现在Windows Mobile中实现这一目标的方法?
我有一个在Compact Framework上运行的.NET 2.0应用程序.它有许多不同的形式,最初设计为在具有特定屏幕分辨率的特定设备上运行.我现在希望让这个应用程序在其他一些具有非常不同的屏幕分辨率的设备上运行(有些具有完全相反的宽高比,其中屏幕现在高于它的宽度).我的问题是如何在其他屏幕上更改我的表单以使其看起来更好?
这与在完整框架上设计表单略有不同,因为我必须设计这些表单以占据整个屏幕,因为屏幕非常小.我曾考虑为每种类型的屏幕方向创建单独的表单(例如MyForm_Wide.cs,MyForm_Tall.cs等).我希望能够重用非设计器生成的代码,该代码包含许多与UI控件绑定的业务逻辑.也许我可以以某种方式使用部分类来实现这一点(例如,MyForm.cs以某种方式被编译成MyForm_Wide.Designer.cs等).我真的想避免每个屏幕方向的特定编译版本.我想到的另一种方法是尝试根据确定的屏幕大小在运行时重新排列一些控件.
你们有什么感想?
我希望它像引用我现有的库一样简单,以便在WP7中使用它们.但是,当我实际使用它时,它抱怨因为.Net CF而无法加载它们.
我是否需要将它们重新编译为.NET CF或其他什么?
我认为WP7的最大优点是:利用现有的代码库......?如果我需要从中删除所有内容并维护多个版本,我如何利用现有的代码库?
有没有人知道如何在SQL Server CE数据库中存储图像?
该列应该是什么数据类型?(我猜二进制.)
我使用Linq-To-Datasets.有可能使用它将图像放入数据库并在以后再次将其拉出来吗?
谢谢你的建议.
我是这样做的:
MemoryStream stream = new MemoryStream();
myBitmapImage.Save(stream, ImageFormat.Png);
myInsertLinqToDataSetRow.IMAGE_COLUMN = stream.ToArray();
Run Code Online (Sandbox Code Playgroud)
要重新加载它我做了这个:
MemoryStream stream = new MemoryStream(myLinqToDataSetRow.IMAGE_COLUMN);
myBitmapImage.SignatureImage = new Bitmap(stream);
Run Code Online (Sandbox Code Playgroud)
我在MSDN上找到一个页面,表示Image列类型正在消失,你应该使用varbinary(MAX).SQL Server CE不支持Max,所以我做了varbinary(8000).
稍后注意:虽然SQL Server CE不支持varbinary(max).Varbinary(8000)对于许多图像来说都不够大.我确实最终使用了Image类型,即使它计划被弃用.一旦ms在移动平台上提供合理的交替,我将考虑切换.
c# compact-framework windows-mobile linq-to-dataset sql-server-ce
我有一个面板,里面有许多图片盒.每个图片框都注册了"contextRightMenu"作为其上下文菜单.
弹出上下文菜单时我想要的是获取当前的鼠标位置.
我尝试使用mouseDown并单击来获取鼠标位置,但这些事件发生在单击上下文菜单的其中一个项目之后,这为时已晚.
上下文菜单的弹出事件不会传递鼠标事件参数,因此我不知道如何获取鼠标位置.
如果我能得到鼠标事件args很容易.
那我就可以:
this.contextRightClick.Popup += new System.EventHandler(this.contextRightClick_Popup);
// If EventArgs include mouseposition within the sender
private void contextRightClick_Popup)(object sender, EventArgs e)
{
int iLocationX = sender.Location.X;
int iLocationY = sender.Location.Y;
Point pPosition = new Point(iLocationX + e.X, iLocationY + e.Y); // Location + position within the sender = current mouseposition
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我获得一些鼠标事件args,或建议一个事件将在contextmenu弹出窗口之前运行?
提前致谢
我有一个场景,我需要在.NET应用程序中运行Javascript解释器.这将在Windows Phone 7上运行,因此它需要符合Compact Framework标准,因为它可能不会预先打包为Windows Phone源提供帮助.
许可证也是一个问题.我们查看了使用MIT许可证下的Jint,但它使用的是Antlr,它是BSD许可证(据我所知,Jint因不重新分发Antlr版权和条件而处于违规状态).还有其他选择吗?
我有一个ListView控件与CheckBoxes = true和View = Details窗体上,但我不希望复选框,可以由用户"可检查".我用它来记录完成的状态显示.但是,我想使用事件处理函数通过代码检查框(即记录完成时:) lvMeters_ItemCheck(null, null);.
我已经禁用了检查盒子本身(我认为,触摸屏在这个设备上并不是真正精确).但是,当选择一行(我有FullRowSelect = true)时,控件通常会检查复选框,并且似乎没有调用事件处理程序.
我试图基本上撤消事件处理程序中的操作:
private void lvMeters_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (sender is ListView)
{
if (e.CurrentValue == CheckState.Checked)
lvMeters.Items[e.Index].Checked = true;
else
lvMeters.Items[e.Index].Checked = false;
}
else if (e.CurrentValue == CheckState.Checked)
lvMeters.Items[e.Index].Checked = false;
else
lvMeters.Items[e.Index].Checked = true; …Run Code Online (Sandbox Code Playgroud) c# ×8
.net ×2
winforms ×2
.net-1.1 ×1
.net-2.0 ×1
bitmap ×1
javascript ×1
location ×1
pocketpc ×1
struct ×1
structlayout ×1
winapi ×1
windows-ce ×1