`
呼延浩云
  • 浏览: 81812 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
69e5c1d2-1364-320a-a0f2-0de5143310d8
互联网的那点事
浏览量:10516
社区版块
存档分类
最新评论

RS对焦组件

阅读更多

下载演示 – 23.2 KB

下载演示 – 44.4 KB

介绍

对焦组件-更改背景色前景色文本框组合框,当他们在关注的焦点。

背景

几个月前,一个任务是给我的所有改变文本框和组合框的背景色,当他们得到集中实现,我做了一个类,一个被称为焦点静态函数,并调用该函数的每个窗体的Load事件。但我想要的东西互动,以便用户可以定义焦点的背景色,前景色焦点,在失去重心的背景色,前景色就失去了重心,也可以决定是否要只注重文本框,组合框,或两者的设计师而不是调用函数的winform的的load事件这么多参数,以便为了我的方便我做了这个组件

幕后

组件和WinForm的是两个不同的对象,虽然该组件是在WinForm和文本框和组合框的一部分,以及让我们不能得到的控制上,如TextBox或ComboBoxWinForm的任何列表直到表单初始化它的所有控件,以便达到什么我们希望我们能够做到这一点,只有当表单将因此这里被初始化的魔术,我们需要设置我们的魔术(即逻辑)在窗体加载事件,当窗体加载初始化其所有组件和控件使多数民众赞成的最佳时间申请在魔术的,我创建的简单RSFocus有几个方法将遍历查找,如TextBox和ComboBox无论我们找到这些控件,我们可以把所有在列表中,并回到我们的RSFocusComponent后想所有的控件。

构造函数

public RSFocus(Form RSform)
{
    TextBoXList = new List<TextBox>();
    ComboBoXList = new List<ComboBox>();
    foreach (Control ctrl in RSform.Controls)
    {
        CheckControlType(ctrl);
    }
}

检查控制

遍历的WinForm和容器,如控件的控件分组框中面板TabControl的,等等,要检查的地方是TextBox和ComboBox。

private void CheckControlType(Control Control)
{
    if (Control is TabControl)
    {
        TabControl(Control);
    }
    else if (Control is TabPage)
    {
        TabPageControlFocus(Control);
    }
    else if (Control is Panel)
    {
        PanelControlFocus(Control);
    }
    else if (Control is GroupBox)
    {
        GroupControlFocus(Control);
    }
    else if (Control is FlowLayoutPanel)
    {
        FlowLayoutPanelControlFocus(Control);
    }
    else if (Control is SplitContainer)
    {
        SplitContainerControlFocus(Control);
    }
    else if (Control is TableLayoutPanel)
    {
        TableLayoutControlFocus(Control);
    }
    else if (Control is ToolStripContainer)
    {
        ToolStripContainerControlFocus(Control);
    }
    else if (Control is TextBox)
    {
        TextBoXList.Add((TextBox)Control);
    }
    else if (Control is ComboBox)
    {
        ComboBoXList.Add((ComboBox)Control);
    }
}

RSFocusComponent的窗口属性

private Form RSForm = null;
[Category("R-Square Focus Form")]
[Description("Select the Form to set focus controls")]
[TypeConverterAttribute(typeof(ReferenceConverter))]
public Form Window 
{
    get
    {
        if (RSForm != null)
        {
            return RSForm;
        }
        return null;
    }
    set
    {
        if (value != null)
        {
            RSForm = value;
            RSForm.Load += RSForm_Load;
        }
        else
        {
            value = null;
        }
    }
}

因此,当窗口属性设置当前WinForm的load事件被置

Load事件

void RSForm_Load(object sender, EventArgs e)
{
    if (TextBox)
    {
        SetTextFocusEvent();
    }
    if (ComboBox)
    {
        SetComboFocusEvent();
    }
}

设置焦点和失去焦点,我们在RSFocusComponent设计师设定的颜色和它们的事件。

如何使用RSFocusComponent

只是10步流程 

步骤 – 1

第一步是添加组件到窗体中做到这一点,你必须简单地添加新的工具箱作为指令在下面给出的图片

 

步骤 – 2

下一步就是浏览RSFocusComponent DLL文件,然后单击确定

步骤 – 3

下一步是拖放RSFocusComponent你想要得到集中,只是双击它,你可以做其他组件的形式

步骤 – 4

下一步是它应该出现在所有的表格组件并排默认堆侧底部形态

步骤 – 5

下一步是改变RSFocusComponent的任何设置,我们只是在运行程序之前,

步骤 – 6

下一步是设置RSFocusComponent的属性,所以我们得到的结果,因为我们想这样设置任何属性之前,我们必须Window属性设置为当前的WinForm

步骤 – 7

下一步是改变RSFocusComponent的任何设置,看看会发生什么的之前刚好运行程序。RSFocusComponent设置默认背景色为重点,文本框设置为true表示只注重背景色将适用于所有文本框不是组合框….

组合框不会改变他们的焦点背景色

步骤 – 8

下一步是ComboBox属性更改为true,以便ComboBox的背景色也会得到改变时,组合框将集中

步骤 – 9

下一步是运行程序和检查的区别,现在的所有组合框也正在改变对焦点的背景色

步骤 – 10

下一步是与RSFocusComponent玩弄改变BackColorOnGotFocus物业及F​​oreColorOnGotFocus物业因此当文本框或组合框将集中为您在这些属性中设置的背景色和前景色将被改变……

最后

最主要的原因,使RSFocusComponent是保存在我们的应用程序已经超过1 WinForm的,每一个WinForm的时间已经超过1文本框所以在这种情况下,我们可以改变所有文本框,只需一次点击的背景色…

 
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics