Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#2.0中创建Delphi TSpeedButton或SpeedButton?_C#_Delphi - Fatal编程技术网

如何在C#2.0中创建Delphi TSpeedButton或SpeedButton?

如何在C#2.0中创建Delphi TSpeedButton或SpeedButton?,c#,delphi,C#,Delphi,如何在C#2.0中创建Delphi TSpeedButton或SpeedButton?有帮助吗?看起来您必须处理OnPaint事件,而不是聚焦…常规的.net 2.0按钮支持TSpeedbutton的部分功能: 图示符:图像 扁平:扁平样式 它不处理: 向下 团体 这两者是相关的,您可以从按钮继承,并拥有它,添加和分组功能 我想知道你是想创建一个像TSpeedButton这样的控件,还是只需要相同的最终结果 从头开始编程当然是可能的,但我只把它作为一种学习练习来处理 假设你想要达到类似的

如何在C#2.0中创建Delphi TSpeedButton或SpeedButton?

有帮助吗?看起来您必须处理OnPaint事件,而不是聚焦…

常规的.net 2.0按钮支持TSpeedbutton的部分功能:

  • 图示符:图像
  • 扁平:扁平样式
它不处理:

  • 向下
  • 团体
这两者是相关的,您可以从按钮继承,并拥有它,添加和分组功能


我想知道你是想创建一个像TSpeedButton这样的控件,还是只需要相同的最终结果

从头开始编程当然是可能的,但我只把它作为一种学习练习来处理

假设你想要达到类似的最终结果

Delphi的TSpeedButton与开发人员认为有用的标准TButton有所不同——它是扁平的,没有焦点,并且比常规按钮消耗更少的资源(因为它没有底层的Windows句柄)

以下哪项对你很重要

如果您只是想要一个不接受焦点的平面按钮,请使用FlatStyle=flat(或PopUp)和TabStop=false的常规按钮。您可以通过设置Image属性或ImageList和ImageIndex/ImageKey的组合来配置图示符

另一种选择是寻找一个现有的按钮组件,它可以满足您的需求——一个可以查看的地方是Krypton工具包(免费使用,请参阅)

如果您希望减少应用程序所消耗的资源数量,那么您可以从别处获得更好的回报


在Windows3.1(Delphi1)和Windows95(Delphi2)时代,可用句柄的数量受到严格限制,系统范围内可用句柄的数量最多。如今,使用Windows XP和Vista,可用句柄的数量要高得多,而且是每个进程的句柄数量,而不是整个系统的句柄数量。除非您正在创建成千上万个按钮,否则您不太可能在任何地方接近用完按钮。

使用按钮并将TabStop属性设置为false仅在点击表单时有效

如果你需要(像我一样)一个在点击时没有被选中的按钮,我发现只有一种方法可以做到这一点

我这样做的方式是对Button类进行子类化,并在构造函数中调用SetStyles,从而将Selective设置为false,如下所示:

public class ButtonNoFocus : Button
{
    public ButtonNoFocus()
        : base()
    {
        base.SetStyle(ControlStyles.Selectable, false);
    }
}

这对我来说是可行的,如果你有一个带有按钮的控制面板,可以对所选对象执行操作,那么这是完美的…

你到底想复制什么功能?当有人单击按钮时,我想复制“无焦点”功能。原因:我正在尝试在windows应用程序中创建嵌入式键盘。在按下键盘按钮之前,此键盘需要能够将按键笔划发送到具有焦点的控件。