小编Kev*_*vin的帖子

Swift 2.2如何更改标签栏控制器的背景颜色

我一直在尝试更改标签栏的背景,并在ObjC中阅读了很多帖子,其中很多都很老.但我没有找到任何Swift,这是我正在使用的.

我终于想出了如何从代码中做到这一点,因此标签栏颜色可以随着每个主题颜色的变化而改变.以下是我使用的参考资料:

  override func viewWillAppear(animated: Bool) {
    // set tab bar background color, including the More tab
    self.tabBarController?.tabBar.backgroundColor = UIColor.blueColor()
  }
Run Code Online (Sandbox Code Playgroud)

我将此代码放在视图控制器中,用于应用程序启动时显示的第一个选项卡,以便它"首先"运行.据我所知,即使我有8个标签并使用更多...标签,它也能正常工作.

我将相同的代码绑定到各个选项卡中的按钮,因此我可以在代码中的任何位置更改选项卡栏颜色.

但我承认,作为一个新手,我不确定这是改变标签栏颜色的最佳位置.如果这是错误的地方,请纠正我.

我在这里发布这段代码,因为它可以节省我几个小时,我希望它可以节省一些(快速)时间.

uitabbarcontroller uitabbar ios swift2

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

emacs从原始缓冲区调度帮助窗口

每当我在emacs中执行apropos,describe-key或其他一些帮助功能时,它会在我的其他窗口中显示帮助.为了摆脱它,我必须更改窗口/缓冲区去那里,键入"q",然后更改回我原来的工作缓冲区.

有没有办法在代码中以某种方式执行此操作?我知道如何保存 - 偏移,切换缓冲区等,但是当我在另一个缓冲区中时,我不知道如何将"q"发送到迷你缓冲区/ emacs.谢谢

emacs

4
推荐指数
2
解决办法
380
查看次数

如何从 C# 调用 COM 对象

首先,我意识到这里有很多帖子讨论了这个话题。我一定很容易地阅读了其中的 20 多篇。但他们都没有给出我寻求的答案。

我编写了一个很小的 ​​C# 测试 COM DLL,其中有一个打印“我还活着!”的方法。在一个消息框中。以管理员身份使用 VStudio,我可以构建和注册 COM 对象。我已成功从 VBA 调用对象并运行该方法。我可以在 VStudio 添加引用/COM 对话框中看到 COM 接口的名称。这一切都让我觉得这个对象是正确构造、注册和可用的。

现在我试图从控制台 C# 应用程序调用它。像许多其他人一样,我试图找出等效于 VBA“CreateObject("DLLName.ClassName")”的代码来获取 C# 中的对象。

一种方法是将 DLL 的引用添加到我的控制台应用程序项目中。我通过“添加引用”对话框的“项目”部分而不是通过对话框的 COM 部分指向程序集。然后我可以简单地说var o = new MyComImplementationClass();和对待它像任何其他类一样。这有效,但这意味着我的控制台应用程序在作弊并且没有通过通常的 COM GAC 接口使用 COM 对象。

另一种方法(这不起作用,但我希望它起作用)是通过“添加引用”对话框上的“COM”选项卡添加引用。我可以看到它,但 VS 抗议“XXX.tlb 文件是从 .NET 程序集导出的。改为添加对程序集的引用。” 这让我回到上面的解决方案,我认为这意味着我的应用程序在作弊。(例如,我不必添加对 VBA 测试应用程序的引用。)

另一种方法是使用Type.GetTypeFromProgId如下代码片段所示。但我也不能让它工作。我必须传入不正确的 ProgID 字符串 - 我感觉它与注册表信息有关,并且与我在 VBA 中提供 CreateObject() 的“DLLName.ClassName”字符串不同。

  public static dynamic ComObjectGet () {
    const string progID = "ComExampleDLLName.ComImplementationClassName";
    Type foo = Type.GetTypeFromProgID (progID);
    dynamic COMobject = Activator.CreateInstance …
Run Code Online (Sandbox Code Playgroud)

c# com com-interop

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

工作文档中的 Word VBA ActiveDocument.PageWidth = 9999999

我正在尝试计算 Word 文档中图片形状的左侧位置,以便我可以将图像置于页面中央。为此,我需要知道左边距值和左右边距之间可用页面的宽度。

我的问题是,当我的宏运行时,会发生错误,因为 的值为ActiveDocument.PageSetup.PageWidth9999999(我假设是某种 MaxValue)。

我想这可能是因为我的文档有多个部分,其中一些是 2 或 4 列部分,一些是横向部分(因此 PageSetup 值将从正常的仅纵向文档样式更改)。

有没有人有一些建议:

1)如何在我的宏中从这种情况中正确恢复?例如,我可以测试这些值并从文档的第一个纵向部分之一中的 PageSetup 值重置它们吗?

2) 如何在我编写文档时管理文档以避免使 PageSetup 值与我最初为文档设置的值以及手动设置横向部分的边距时的值“未定义”(不是正确的词)?

谢谢你。

一些代码,供有兴趣的人使用。当我在调试器中将鼠标悬停在 PageWidth 上时,我的宏会在 PageWidth 值上触发一个错误,例如“.PageWidth = < Object variable or With block variable not set.>”。

Dim usablewidth As Single
With ActiveDocument.PageSetup
   usablewidth = .PageWidth - .leftmargin - .RightMargin
End With
Run Code Online (Sandbox Code Playgroud)

vba ms-word

3
推荐指数
1
解决办法
854
查看次数

C中的X509_NAME宏无法编译

这是一个愚蠢的编译错误,但是对于我一生来说,我无法找出问题所在。我已经花了几个小时,但一点都没有取得进展。而且我对OpenSSL的了解当然还不够,无法理解X509_NAME是什么。

我正在编译一个小的C文件,如果有人调用文件中的30个左右函数之一,则该函数的功能是打印出错误消息,以指示C程序不支持30个SSL函数。每个功能约3行长(请参见下文)。调用接口从openssl/X509.hwin32 的OpenSSL 文件复制而来。(我正在运行Windows10 x64,但使用VStudio 2017命令行设置为32位进行编译)。

这是openssl / x509.h包含文件中的原始接口:

int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len);
Run Code Online (Sandbox Code Playgroud)

由于原始的x509.h包含文件在内部说“ Win32上的X509_NAME的定义位于wincrypt.h中”,因此我将X509_NAME宏的定义直接复制到了源文件中,如下所示。

我的简单错误消息功能的代码如下。我只是从openssl/x509.h文件中复制了接口定义,并将其变成一个函数:

#define X509_NAME ((LPCSTR) 7) /* copied from wincrypt.h */
int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len) {
    print_error (E_NO_SSL_SUPPORT);
    return (-1);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用VS 2017命令行编译器针对32位编译代码时,收到这些错误消息。236行包含麻烦的代码行int X509_NAME_...

cl   /c /Od /nologo /MT /I. "-I..\s" ..\s\stubssl.c
stubssl.c
..\s\stubssl.c(236): error C2143: syntax error: missing ')' before '('
..\s\stubssl.c(236): error C2091: function …
Run Code Online (Sandbox Code Playgroud)

c openssl

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

Msbuild CLI platform=x64 和项目文件属性 &lt;Platform&gt;x64&lt;/Platform&gt; 给出不同的结果

/p:Platform=x64这个问题是关于在 MSBuild 命令行上使用与<Platform>x64</Platform>在 csproj 文件中使用之间的区别。

我制作了两个简单的 c# NET 5 解决方案/项目,其中包含一个可执行文件 (HsConsole) 和一个类库 (HsLogger),以调查何时发生 MSB3270 架构不匹配。这是错误消息示例。

warning MSB3270: There was a mismatch between the processor architecture of the project being built "MSIL" and the processor architecture of the reference "HsLogger", "AMD64". 
Run Code Online (Sandbox Code Playgroud)

** 请注意,错误消息涉及 MSIL (hsconsole) 和 AMD64 (hslogger),即使命令行和项目文件都指定 x64 而不是 AMD64。

HsLogger 记录器使用构建后事件将类库复制到存储用于在项目之间共享的库的文件夹。HsConsole 项目引用该文件夹中的类库 HsLogger。

问题是,每当我/p:"Platform=x64"在 MSbuild 命令行上使用时,我都会收到 MSB3270 错误消息(编译 HsConsole 时),但当我在命令行上不使用任何参数时,不会收到 MSB3270 错误消息。<Platform>x64</Platform>在这两种情况下,已在 HsLogger 项目文件中声明。

这是两个项目文件:

HsLogger
<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
      <Platform>x64</Platform>
      <TargetFramework>net5.0-windows7.0</TargetFramework>
   </PropertyGroup> …
Run Code Online (Sandbox Code Playgroud)

c# msbuild csproj

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

TCP 设置时间是否这么慢(1 秒),通常吗?

我的场景是我有一百个小文本文件,我想加载、解析和存储在 DLL 中。DLL 的客户端是瞬态的(命令行程序),我不想在每次命令行调用时重新加载数据。

所以,我想我会写一个 Windows 服务器来存储数据并让客户端使用 TCP 查询服务器。但是,TCP 性能确实很慢。我编写了以下代码Stopwatch用于测量套接字设置时间。

    // time the TCP interaction to see where the time goes
    var stopwatch = new Stopwatch();
    stopwatch.Start();

    // create and connect socket to remote host
    client = new TcpClient (hostname, hostport); // auto-connects to server
    Console.WriteLine ("Connected to {0}",hostname);

    // get a stream handle from the connected client
    netstream = client.GetStream();

    // send the command to the far end
    netstream.Write(sendbuf, 0, sendbuf.Length);
    Console.WriteLine ("Sent command to far end: …
Run Code Online (Sandbox Code Playgroud)

c# sockets tcp tcpclient

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

标签 统计

c# ×3

c ×1

com ×1

com-interop ×1

csproj ×1

emacs ×1

ios ×1

ms-word ×1

msbuild ×1

openssl ×1

sockets ×1

swift2 ×1

tcp ×1

tcpclient ×1

uitabbar ×1

uitabbarcontroller ×1

vba ×1