小编MBu*_*lli的帖子

斯威夫特懒惰的只读属性

在使用Swift玩一点时,我尝试编写一个readonly和lazy初始化属性.我很快就编写了这行代码,以了解它是不允许的.

// no valid Swift code.
lazy let foo : Int = { return 42 }()
Run Code Online (Sandbox Code Playgroud)

您必须将延迟属性声明为var.这本快速的书明确指出,懒惰是不可能有充分理由:

"您必须始终将惰性属性声明为变量(使用var关键字),因为在实例初始化完成之后,可能无法检索其初始值.初始化完成之前,常量属性必须始终具有值,因此不能声明为惰性."

假设我想在swift中拥有一个readonly lazy属性.什么是存档的最佳方式?

swift

22
推荐指数
3
解决办法
7555
查看次数

将默认情况与其他情况相结合

给出C#中的以下枚举和switch/case,以根据其状态返回文本框的边框颜色.

enum TextboxState {
 Default,
 Error
}

switch(foo) {
 default:
 case TextboxState.Default:  return Color.Black;
 case TextboxState.Error:    return Color.Red;
}
Run Code Online (Sandbox Code Playgroud)

所以基本上我定义了一个真实的,而不仅仅是通过约定默认状态,也就是TextboxState.Default通过添加default:案例 我只是想这样做,以防止在枚举中添加新值时将来的更改.

根据Swift的书,这是不可能的:

"如果为每个可能的值提供一个switch case是不合适的,你可以定义一个默认的catch-all case来覆盖任何未明确解决的值.这个包罗万象的案例由关键字default指示,并且必须始终显示在最后."

这一段很清楚,所以我认为上面的模式不适用于Swift或者我错过了什么?有没有其他方式来存档像上面的代码?

enums swift

7
推荐指数
1
解决办法
2199
查看次数

坎布里亚数学大上下缘

我想在winforms文本框中显示一些数学表达式.因此我认为"Cambria Math"字体是一个不错的选择,但由于字体的顶部和底部边缘较高,文本看起来很奇怪.首先,我认为我犯了一个错误,但根据这个问题,这是字体的正确行为.

文本框的屏幕截图

为什么Cambria Math具有这些大的边距值,如何在Word 2010等文本框中正确显示我的字符串?

(请注意,我只对排版有所了解;)

编辑:我必须使文本框高,否则插入符号将是不可见的.文本框的字体大小设置为8.25pt

c# fonts winforms

6
推荐指数
1
解决办法
2068
查看次数

枚举TWebRequest HTTP标头字段

是否可以转储TWebRequest(和TWebResponse)对象的所有头字段?目前我使用GetFieldByName()并使用Writeln()打印它们,但这只有在我已经知道标题字段的名称时才有效.我正在寻找一种方法来获取所有标题字段名称以创建每个字段,但我没有找到任何方法来做到这一点.

我编写了一个REST datasnap控制台应用程序,并希望将所有HTTP请求/响应记录到控制台.

delphi delphi-xe2

6
推荐指数
1
解决办法
3436
查看次数

如何编写本地化的屏幕键盘

我必须为我们公司的程序编写一个屏幕键盘,该程序主要用于具有触摸功能的工业PC.

我们无法使用Windows默认键盘,因为我们不需要键盘上的所有键.所以我被要求用C#写一个自定义的.

我已经发现这个博客作为参考,但我不知道如何开始.

我创建了一个小型原型GUI,为每个键分配一个扫描码,并将这些扫描码转换为相关的字符.并将它们发送到主动控件.但我不确定我应该使用哪种扫描码.

所以我的问题是,这是编写像这样的OSK的正确方法,如果是,我应该使用哪些扫描码?有链接吗?

我也不确定如何处理这些shift州......

编辑:

好吧,我做了一些研究,想出了一个osk,它读取当前的键盘布局,甚至可以处理简单的shift状态(ShiftAlt Gr).我写了一个KeyButton继承自的类Button,它KeyButton有一个ScanCodebyte类型的属性,如果你为它分配一个有效的扫描码,它KeyButton会调用相关的函数来获得正确的文本.我使用Michael Kaplan博客的功能进行了一些小改动.最后我发现我必须像他一样做.

所以我的问题的答案是:是的,您必须在按钮上使用扫描码,然后从键盘布局中获取虚拟键和unicode.使用这些扫描码.

现在我得到的角色唯一剩下的就是发送它们.

c# windows keyboard screen localized

5
推荐指数
1
解决办法
2682
查看次数

如果文档关闭,启动Word并监视

我们需要为学校项目启动一个单词实例并跟踪文档是否已关闭.来自单词的COM api没有事件,有没有其他方法可以做到这一点?

目前我们正在使用COM api,但其他一切都没问题.我们正在用C#编程.

.net document ms-word word-automation

5
推荐指数
1
解决办法
2648
查看次数

将图形内容复制到位图

我尝试将图形对象的内容复制到位图.我正在使用此代码

public static class GraphicsBitmapConverter
{
    [DllImport("gdi32.dll", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool BitBlt(IntPtr hdc, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, TernaryRasterOperations dwRop);

    public static Bitmap GraphicsToBitmap(Graphics g, Rectangle bounds)
    {
        Bitmap bmp = new Bitmap(bounds.Width, bounds.Height);

        using (Graphics bmpGrf = Graphics.FromImage(bmp))
        {
            IntPtr hdc1 = g.GetHdc();
            IntPtr hdc2 = bmpGrf.GetHdc();

            BitBlt(hdc2, 0, 0, bmp.Width, bmp.Height, hdc1, 0, 0, TernaryRasterOperations.SRCCOPY);

            g.ReleaseHdc(hdc1);
            bmpGrf.ReleaseHdc(hdc2);
        }

        return bmp;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我像这样使用这种方法

Graphics …
Run Code Online (Sandbox Code Playgroud)

c# graphics gdi+ bitmap bitblt

5
推荐指数
1
解决办法
7401
查看次数

合并工具条MDI子 - 父

我在互联网上找到了一些信息,但没有任何帮助我.如何合并父mdi表单中的工具条?

编辑:

这个代码对我有用:

private void MainForm_MdiChildActivate(object sender, EventArgs e)
{
    IChildWindow child = ActiveMdiChild as IChildWindow;

    if (child != null)
    {
        ToolStripManager.Merge(child.ToolStrip, toolStrip1);
        child.ToolStrip.Hide();

        child.FormClosing += delegate(object sender2, FormClosingEventArgs fe)
        {
            child.ToolStrip.Show();
            ToolStripManager.RevertMerge(toolStrip1, child.ToolStrip);
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

c# merge mdi winforms

4
推荐指数
1
解决办法
5814
查看次数

覆盖NancyFx中响应的默认Content-Type

我正在用NancyFx编写REST API.我经常得到这样的代码:

Post["/something"] = _ => {
// ... some code
if (success) 
    return HttpStatusCode.OK;
else
    return someErrorObject;
};
Run Code Online (Sandbox Code Playgroud)

客户端始终假定application/json为所有响应的内容类型.它实际上是Accept: application/json在请求中设置的.application/json无论实际身体如何,没有错误的回答都是错误的.它只是检查内容类型,如果它与json不匹配则中止.我无法改变这种行为.

现在我面临的问题是,只需返回HttpStatusCode.OKNancy集,Content-Type: text/html但正如所说客户端假定application/json并且即使正文为空也会失败并出现错误.

我能够像这样强制内容类型:

return Negotiate
    .WithContentType("application/json")
    .WithStatusCode(HttpStatusCode.OK);
Run Code Online (Sandbox Code Playgroud)

我不想在任何地方重复这个代码.当然,我可以在一个函数中抽象它,但我正在寻找一个更优雅的解决方案.

有没有办法覆盖默认的Content-Type响应,以便return HttpStatusCode.OK将我的Content-Type设置为application/json

c# nancy

4
推荐指数
1
解决办法
1697
查看次数

查找office word 2010的安装路径

我发现这篇文章描述了如何找到办公室的安装路径:

http://support.microsoft.com/kb/234788/en-us

但是在文章中只有2007年的GUID,办公室2010的GUID是什么,或者我在哪里可以找到它们?

install windows-installer ms-word path office-2010

1
推荐指数
1
解决办法
2万
查看次数