小编DxC*_*xCK的帖子

检查`object [] args`是否满足Delegate实例?

我有以下方法签名:

public static void InvokeInFuture(Delegate method, params object[] args)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

委托和参数将保存到集合中以供将来调用.

有没有办法可以检查arguments数组是否满足委托要求而不调用它?

谢谢.

编辑: 感谢您的反思实现,但我正在寻找一种内置的方法来实现这一点.我不想重新转换方向盘,.NET Framework已经在Delegate.DynamicInvoke()的某个地方实现了这种检查,实现处理所有那些只有微软开发人员可以考虑的疯狂特殊情况,并通过了单元测试和QA.有没有办法使用这个内置实现?

谢谢.

.net c# delegates arguments invoke

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

string.Empty.StartsWith(((char)10781).ToString())总是返回true?

我试图处理以下字符:⨝(http://www.fileformat.info/info/unicode/char/2a1d/index.htm)

如果你检查一个以这个字符开头的空字符串,它总是返回true,这没有任何意义!这是为什么?

// visual studio 2008 hides lines that have this char literally (bug in visual studio?!?) so i wrote it's unicode instead.
char specialChar = (char)10781;
string specialString = specialChar.ToString();

// prints 1
Console.WriteLine(specialString.Length);

// prints 10781
Console.WriteLine((int)specialChar);

// prints false
Console.WriteLine(string.Empty.StartsWith("A"));

// both prints true WTF?!?
Console.WriteLine(string.Empty.StartsWith(specialString));
Console.WriteLine(string.Empty.StartsWith(((char)10781).ToString()));
Run Code Online (Sandbox Code Playgroud)

.net c# string unicode char

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

TabRenderer没有启用视觉样式?

我想TabControl用自定义功能绘制自定义.

为此,我继承了Panel类并重写了OnPaint方法以使用TabRenderer类进行绘制.

问题是TabRenderer只有在启用视觉样式(可以检查TabRenderer.IsSupported)时才能工作,但如果禁用了视觉样式,我该怎么办?

在这种情况下,我想使用ControlPaint类来绘制没有视觉样式的选项卡,但它没有与Tabs相关的绘制方法.我希望它基本上像常规一样在视觉上表现TabControl.

.net c# winforms visual-styles

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

视觉风格独立绘图

使用 C# winforms,我想创建看起来像真实控件的自定义控件。

有很多类可用于绘制看起来像真实控件的控件:ControlPaint, VisualStyleRenderer, ButtonRenderer, CheckBoxRenderer, ComboBoxRenderer, GroupBoxRenderer, ProgressBarRenderer, RadioButtonRenderer, ScrollBarRenderer, TabRenderer, TextBoxRenderer, TextRenderer, ToolStripProfessionalRenderer, ToolStripRenderer, ToolStripSystemRenderer, TrackBarRenderer

考虑视觉风格时出现的问题:我想独立于视觉风格。含义:我不在乎用户是否允许视觉样式,我希望它起作用。如果用户启用了视觉样式,我想使用视觉样式绘制它,否则我想在没有视觉样式的情况下绘制它。

根据 MSDN 文档,唯一与视觉样式无关的类是ButtonRendererCheckBoxRendererGroupBoxRendererRadioButtonRenderer。这意味着对于所有其他情况,我需要检查自己是否启用了视觉样式并使用不同的代码来绘制部件。

假设我想自己绘制一个 Tab 控件部件。TabRenderer类具有所有需要的功能,但它只有在用户启用视觉样式时才有效。否则我需要使用ControlPaint类来绘制,但它使用完全不同的模型,没有ControlPaint.DrawTab()方法或类似的东西,我需要弄清楚我需要绘制哪些矩形类型,以便它看起来像一个真正的标签。这很烦人。

包括 Tab 控件在内的内置控件已经具有这种功能,可以使用或不使用视觉样式来绘制自己。为什么微软不向自定义控件创建者公开这个功能?为什么自定义控件创建者应该受苦?

c# drawing winforms visual-styles

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

Process.Start()模拟问题

尝试使用另一个访问令牌启动进程,但没有成功,它将作为非模拟用户运行.

using (WindowsIdentity identity = new WindowsIdentity(token))
using (identity.Impersonate())
{
    Process.Start("blabla.txt");
}
Run Code Online (Sandbox Code Playgroud)

如何使这项工作正常?

.net c# impersonation process access-token

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

将ToolStripSplitButton.DropDownButtonWidth设置为0

我想在我ToolStripSplitButton的按钮中仅用作按钮(没有下拉菜单)StatusStrip.

出于这个原因,我想不显示小箭头,但我不能这样做.

尝试设置ToolStripSplitButton.DropDownButtonWidth为0,它在Windows 7中成功运行,但在Windows XP中不成功.

如何摆脱小箭头?

.net c# toolstrip statusbar winforms

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

自定义控件导致Visual Studio 2008到CRASH

以下代码是自定义控件.在Visual Studio设计器中使用此控件会导致Visual Studio崩溃,而没有任何明显的细节.

我正在使用Visual Studio 2008.

我在这里做错了吗?

using System;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace InstalacionesSayma.GUI
{
    public class CustomControlTest : Panel
    {
        private Label _label;

        public CustomControlTest()
        {
            _label = new Label();
            this.Controls.Add(_label);
        }

        public override Font Font
        {
            get
            {
                return _label.Font;
            }
            set
            {
                _label.Font = value;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# crash custom-controls winforms

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

Panel.TabStop = true 没有效果

我试图将Panel.TabStop属性切换到true但它不会影响任何东西。

如何TabStop在 a 中启用Panel

.net c# panel tabstop winforms

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

如何更改计划任务的内存优先级?

当在没有任务计划程序的情况下启动我的程序时,它的内存优先级为 5,就像我的系统 (Windows 7) 中运行的所有其他程序一样。

但在任务计划程序下运行时,它的内存优先级为4,这会影响性能。

笔记!进程优先级是正常(CPU 优先级 8),所以这不是问题!只有内存优先级才是问题所在!

进程浏览器截图:

内存优先级 4,进程资源管理器

如何将定时任务的内存优先级改为5?Win32 API 是一个可接受的解决方案。

.net c# memory scheduled-tasks

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

如何确保只有我的程序可以访问命名管道?

我计划将我的程序拆分为2个进程:第一个是GUI,第二个是使用管理员帐户运行的后台进程.两者都应该相互沟通.

我考虑使用命名管道,但有一件事困扰我:

有没有办法确保只有我的程序可以访问命名管道?

.net c# security named-pipes inter-process-communicat

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