小编Bri*_*sen的帖子

何时以及为什么要实现IComponent,IContainer和ISite?

我很想知道IComponent,IContainer和ISite的用途.我已经阅读了文档,但它非常模糊(或者我认为它太难了).我知道如果我创建一个类作为组件,它可以在Visual Studio设计器中使用.但我真的想更全​​面地了解:组件/容器模式实现了什么,它能让我的生活变得更轻松吗?

.net c# system.componentmodel

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

在Windows C中将Windows窗体属性绑定到ApplicationSettings的最佳方法?

在需要一些严肃的重新分解的桌面应用程序中,我有几个代码块,如下所示:

private void LoadSettings()
{
    WindowState = Properties.Settings.Default.WindowState;
    Location = Properties.Settings.Default.WindowLocation;
    ...
}

private void SaveSettings()
{
    Properties.Settings.Default.WindowState = WindowState;
    Properties.Settings.Default.WindowLocation = Location;
    ...
}
Run Code Online (Sandbox Code Playgroud)

取代它的最佳方法是什么?项目施加的限制:

  • Visual Studio 2005
  • C#/ .NET 2.0
  • Windows窗体

更新

对于后人,我还发现了两个有用的教程:"C#中的Windows窗体用户设置""探索持久应用程序设置的秘密".

我问了一下使用这种技术的结合形式的大小后续问题在这里.我将它们分开以帮助那些寻找类似问题的人.

.net c#

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

可以使用Winkey + L的低级键盘挂钩/ SendInput?(工作站锁定在Vista及更高版本中被截获)

我正在开展一个名为UAWKS(非官方Apple无线键盘支持)的项目,帮助Windows用户使用Apple的蓝牙键盘.UAWKS的主要目标之一是交换Cmd密钥(其行为与WinkeyWindows一样)Ctrl,允许用户执行Cmd+ C复制,Cmd+ T选择新选项卡等.

它目前使用AutoHotkey开发,在Windows XP下运行良好.但是,在Vista和Windows 7上,Cmd+ L会导致问题:

  • 无论低级键盘挂钩,Win+ L总是被Windows拦截并且通常锁定工作站......
  • 您可以使用此注册表黑客禁用工作站锁定,但按下Win+ L仍然无法在AHK中反弹
  • 在Keydown状态下按Win+ 键L离开Winkey,直到下一个(额外的)Winkey Up.模拟Keyup事件似乎也不起作用!

似乎Win+ L是一个特殊的和弦,其他一切混乱.

我查看了AHK源代码,他们尝试SendKey()在keyboard_mouse.cpp中解决这个问题(在v1.0.48.05的第883行附近),但它不起作用.我在C#中编写了自己的低级键盘钩子应用程序,我也看到了同样的问题.

有没有其他人遇到这个?有解决方法吗?

c# winapi autohotkey keyboard-hook windows-7

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

为什么不能将Windows窗体的大小绑定到ApplicationSettings?

更新:已解决,带代码

我得到了它的工作,请看下面我的答案代码...

原帖

正如Tundey在回答我的上一个问题时指出的那样,你几乎可以毫不费力地将关于Windows窗体控件的所有内容绑定到ApplicationSettings.那么表单大小真的没办法做到这一点吗?本教程表示您需要显式处理Size,以便在窗口最大化或最小化时保存RestoreBounds而不是size.但是,我希望我可以使用以下属性:

public Size RestoreSize
{
    get
    {
        if (this.WindowState == FormWindowState.Normal)
        {
            return this.Size;
        }
        else
        {
            return this.RestoreBounds.Size;
        }
    }
    set
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

但我看不到在设计器中绑定它的方法(在PropertyBinding列表中明显缺少Size).

c# data-binding visual-studio .net-2.0

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