我正在尝试应用焦点行为,类似于FlowLayoutPanel的按钮蓝色边框。我尝试使用GotFocus和LostFocus,但显然这不是可行的方法。

private void FlowLayoutPanel_Click(object sender, EventArgs e)
{
    (sender as Control).BackColor = SystemColors.GradientActiveCaption;
    //More operations.
}

private void Panel_LostFocus(object sender, System.EventArgs e)
{
    (sender as Control).BackColor = default(Color);
    //More operations.
}


在FlowLayoutPanel上单击时,什么也没有发生,而在使用tab时,则依次调用这两个事件。

有什么建议么?

最佳答案

默认情况下,FlowLayoutPanel不是可选控件。您可以通过从FlowLayoutPanel派生来创建自定义流程布局面板,并设置SelectableUserMouse control styles以使其可用鼠标选择。同样要接受制表符停止,请将TabStop属性设置为true:

class ExFlowLayoutPanel:FlowLayoutPanel
{
    public ExFlowLayoutPanel():base()
    {
        SetStyle(ControlStyles.Selectable, true);
        SetStyle(ControlStyles.UserMouse, true);
        TabStop = true;
    }
}


然后,您可以处理GotFocusLostFocusEnterLeave事件。

关于c# - C#将集中的属性应用于FlowLayoutPanel,例如按钮行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35409786/

10-10 01:37