小编use*_*489的帖子

当停靠控件可见时Z顺序更改

我在.NET Framework 4.0版中使用C#Winforms

我有一个面板,其中包含四个标签,所有标签都停靠在面板的顶部.中间的两个标签是隐藏的.

---顶部---
标签一(可见)
标签二 - (不可见)
标签三(不可见)
标签四 - (可见)
---底部---

单击带有以下代码的按钮时

private void btnShowLabels_Click(object sender, EventArgs e)
{
    this.lblTwo.Visible = true;
    this.lblThree.Visible = true;
}
Run Code Online (Sandbox Code Playgroud)

标签二和三出现,但它们的z顺序混合起来,如下所示.

---顶部---
标签一(可见)
标签(可见)
标签 - (可见)
标签四 - (可见)
---底部---

为什么z顺序会发生变化,如何阻止这种情况发生.

我意识到我可以BringToFront()在点击事件中使用重新排序所有标签,但这对于更复杂的对接安排尤其有点过分.

c# docking z-order

5
推荐指数
2
解决办法
1449
查看次数

即使在Windows重启后,C#AddFontResource也无法正常工作

我正在尝试使用下面的代码使用C#代码安装字体.

调用InstallFont不会抛出任何异常并返回1.我认为这表明它已经安装了字体.但是,在Windows Fonts文件夹中或者在检查InstalledFontCollection时,字体不会出现在已安装字体列表中,也不会在我的软件中显示.我已经尝试在安装后重新启动计算机,但它仍然无法使用.

如果我通过双击Windows资源管理器并单击安装字体安装而不会出现问题来手动安装文件.

我在Windows 7 64位操作系统上使用C#,Visual Studio 2010,Microsoft .NET Framework 4.0.

任何帮助将不胜感激.

非常感谢,保罗

清单文件包括:

requestedExecutionLevel level="requireAdministrator" uiAccess="false"
Run Code Online (Sandbox Code Playgroud)

申请代码:

[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
[DllImport("gdi32.dll", EntryPoint = "AddFontResourceW", SetLastError = true)]
public static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)] string lpFileName);

public static int InstallFont()        
{
    InstalledFontCollection ifc = new InstalledFontCollection();

    if (ifc.Families.Any(item => item.Name == "Arial Narrow"))
        return 100; // Font already installed

    string filename = @"C:\Users\username\Downloads\ARIALN.TTF";

    const int WM_FONTCHANGE = 0x001D;
    const int …
Run Code Online (Sandbox Code Playgroud)

c# api fonts dllimport

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

标签 统计

c# ×2

api ×1

dllimport ×1

docking ×1

fonts ×1

z-order ×1