小编Cod*_*ody的帖子

Win Forms UserControl 未检测到按键

对此有很多问题(),但我尝试了所有这些问题的修复,但它们要么不起作用,要么不适合我的目的。这是我的基本结构:

User Control
|-Panel
  |-Picture Box (several of them, created at runtime, do not exist at design time)
Run Code Online (Sandbox Code Playgroud)

因为我认为它是相关的,面板将其停靠栏设置为“填充”并将调整大小设置为“增长和缩小”,因此它始终覆盖整个用户控件。图片框总是覆盖面板的一部分,但通常不是全部(尽管可能)。

我特别在听Ctrl + C,我需要一种方法,无论哪个孩子有焦点,都可以做出回应。我想要一种可以侦听任意按键的方法,以便我稍后对其进行扩展。

链接页面上的一个答案建议为这些按键设置一个全局侦听器,我不想这样做,因为如果它是后台应用程序,我不希望它关闭。另一个建议在顶级表单中检测它并将其过滤到我的用户控件。问题是向下的用户控件被构建为一个 DLL,我不想强​​制使用它的应用程序必须实现监听Ctrl + C,这是它应该自己处理的事情。

为什么上面的链接对我不起作用

1) 我没有 KeyPreview 属性在我的 UserControl 上设置为 true。关于该问题的第二个答案建议覆盖 ProcessCmdKey,这是我所做的,但无论我尝试什么,都不会调用回调。

2)这个也建议覆盖ProcessCmdKey。正如我所说,它永远不会被调用。

3)我没有接受按钮设置为true。

4)KeyDownPreviewKeyDown回调都已经实现,都没有被调用。

5) 还建议使用 ProcessCmdKey。

无论焦点如何,如何在用户控制级别检测关键事件?或者,如果我尝试的上述方法应该有效,我错过了哪些设置阻止它工作?

.net c# user-controls winforms

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

C#位图是否记得它的来源?

此问题特定于System.Drawing.Bitmap.

考虑这种情况:我创建一个像这样的位图

public Bitmap GetImage(string sourceImage) 
{
   //sourceImage contains something like "C:\\Users\\my.name\\path\\to\\image.jpg"
   //error/valid filename checking omitted in this example
   Bitmap img = new Bitmap(sourceImage);
   return img;
}
Run Code Online (Sandbox Code Playgroud)

现在我的代码去做并做了一些事情Bitmap.稍后,代码的不相关部分决定使用该图像完成,并且不再需要保留该Bitmap对象.但是,有可能再次需要它,所以它想要记住是什么sourceImage,如果它确实需要它,它知道如何重新创建它.这主要是由于记忆; 存储路径串比存储(可能)大图像占用更少的空间.

Bitmap记得它来自哪里,还是必须随身携带这些信息?

我考虑过只分配sourceImage给该Tag属性,但是我正在使用Tag其他东西,我宁愿不要过度复杂化它.我希望源信息仍然可以访问,以免给我带来麻烦.

c# winforms

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

标签 统计

c# ×2

winforms ×2

.net ×1

user-controls ×1