假设我有TextBlock
文字"Some Text"和字体大小10.0.
我怎么能算出合适的TextBlock
宽度?
使用C#,我正在尝试从磁盘加载JPEG文件并将其转换为字节数组.到目前为止,我有这个代码:
static void Main(string[] args)
{
System.Windows.Media.Imaging.BitmapFrame bitmapFrame;
using (var fs = new System.IO.FileStream(@"C:\Lenna.jpg", FileMode.Open))
{
bitmapFrame = BitmapFrame.Create(fs);
}
System.Windows.Media.Imaging.BitmapEncoder encoder =
new System.Windows.Media.Imaging.JpegBitmapEncoder();
encoder.Frames.Add(bitmapFrame);
byte[] myBytes;
using (var memoryStream = new System.IO.MemoryStream())
{
encoder.Save(memoryStream); // Line ARGH
// mission accomplished if myBytes is populated
myBytes = memoryStream.ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,执行行ARGH
给了我一条消息:
COMException未处理.句柄无效.(HRESULT异常:0x80070006(E_HANDLE))
我不认为这个文件有什么特别之处Lenna.jpg
- 我是从http://computervision.wikia.com/wiki/File:Lenna.jpg下载的.你能说出上面的代码有什么问题吗?
有没有办法使用自动属性显式实现接口?例如,考虑以下代码:
namespace AutoProperties
{
interface IMyInterface
{
bool MyBoolOnlyGet { get; }
}
class MyClass : IMyInterface
{
static void Main(){}
public bool MyBoolOnlyGet { get; private set; } // line 1
//bool IMyInterface.MyBoolOnlyGet { get; private set; } // line 2
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码编译.但是,如果将第1行替换为第2行,则无法编译.
(这不是我需要让第2行工作 - 我只是好奇.)
在这篇关于C#中线程的网络教程中,Joseph Albahari写道:"不要在汇集的线程中睡觉!" 你为什么不这样做?它对性能的影响有多严重?(这不是我想要做的;我只是好奇.)
我公司的代码库包含以下C#行:
bool pathExists = Directory.Exists(path);
Run Code Online (Sandbox Code Playgroud)
在运行时,字符串path
恰好是公司内部网上文件夹的地址 - 类似于\\company\companyFolder
.当从我的Windows机器到内联网的连接启动时,这可以正常工作.但是,当连接断开时(就像今天一样),执行上面的行会导致应用程序完全冻结.我只能通过使用任务管理器将其删除来关闭应用程序.
当然,我宁愿在这种情况下Directory.Exists(path)
回归false
.有没有办法做到这一点?
我想在下面的代码中从第1行到第2行:
using System;
using System.Windows.Forms;
namespace MyNameSpace
{
internal class MyTextBox : System.Windows.Forms.TextBox
{
protected override void OnEnabledChanged(EventArgs e)
{
base.OnEnabledChanged(e);
Invalidate(); // Line #1 - can get here
Refresh();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
System.Diagnostics.Debugger.Break(); // Line #2 - can't get here
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,似乎neiter Invalidate()和Refresh()会导致调用OnPaint(PaintEventArgs e).两个问题:
我正在使用32位应用程序,有时会导致某个64位Windows 7计算机崩溃.我使用Sysinternals的ProcDump实用程序生成了崩溃的转储文件.(我使用命令"procdump -ma -h MyApplication.exe".)现在,当我用WinDbg打开转储文件时,我收到此错误:
"打开转储文件'MyDumpFile.dmp'时失败,HRESULT 0x80004005.它可能已损坏或调试器无法理解的格式."
在32位Windows XP计算机上运行WinDbg X86以及在64位Windows 7计算机上运行WinDbg AMD64时都会发生这种情况.你能解释一下吗?
编辑 - 附加信息:在文件上运行dumpchk时,它说:
"Minidump没有系统信息.无法打开转储文件[MyDumpFile.dmp],HRESULT 0x80004005'未指定错误'".
也许转储文件只是腐败?
我不太清楚类System.Windows.Media.Drawing
和之间的差异System.Windows.Shapes.Shape
.它们都暴露了WPF中与2D图形相关的功能.你何时会在WPF应用程序中选择一个,何时选择另一个?
我正在使用传统的VB6/COM应用程序,有时会导致Windows 7崩溃.我现在使用Sysinternals的ProcDump工具生成了其中一个崩溃的.dmp文件.但是,我以前从未使用过dump文件.您建议使用哪些资源来开始转储文件分析?
我有一个没有无参数构造函数的用户控件; 我们称之为WithoutDefaultConstructor
.我想将一个WithoutDefaultConstructor
被调用的myControl
插入另一个控件(被调用MainWindow
)的XAML代码中.但是,我收到此编译器错误:
"WithoutDefaultConstructor"类型不能具有Name属性.没有默认构造函数的值类型和类型可以用作ResourceDictionary中的项.
如何在不添加无参数构造函数的情况下解决此问题WithoutDefaultConstructor
?
以下是内容MainWindow.xaml
:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WpfApplication1="clr-namespace:WpfApplication1" Title="MainWindow"
Height="350" Width="525">
<WpfApplication1:WithoutDefaultConstructor Name="myControl">
</WpfApplication1:WithoutDefaultConstructor>
</Window>
Run Code Online (Sandbox Code Playgroud)
以下是内容WithoutDefaultConstructor.xaml.cs
:
using System.Windows.Controls;
namespace WpfApplication1
{
public partial class WithoutDefaultConstructor : UserControl
{
private int I_really_need_to_initialize_this_int;
public WithoutDefaultConstructor(int i)
{
InitializeComponent();
I_really_need_to_initialize_this_int = i;
}
}
}
Run Code Online (Sandbox Code Playgroud) c# ×6
wpf ×4
crash-dumps ×2
2d ×1
com ×1
connection ×1
file-io ×1
font-size ×1
graphics ×1
image ×1
networking ×1
sleep ×1
sysinternals ×1
threadpool ×1
windbg ×1
winforms ×1
xaml ×1