添加新控件时,是否可以将面板上的控件的Z顺序设置为始终位于顶部?

杰克·艾伦

添加新控件时,是否可以将面板上的控件的Z顺序设置为始终位于顶部?我正在创建一个纸牌游戏,并且有一个面板,上面有卡的图片(每张卡都有一个新的图片框)。添加新图片后,它会自动转到面板的背面。有什么办法可以使它始终排在最前面吗?我已经尝试过“ SetChildIndex”,但是每个图片框的名称都与我正在重复使用的代码相同。任何帮助表示赞赏。谢谢

private void DealPlayerCard(int cardNum)
{
    string Card = Classes.Deck.GetCurrentCard();
    PictureBox pb = new PictureBox() { Width = 172, Height = 240, SizeMode = PictureBoxSizeMode.StretchImage };
    pb.ImageLocation = @"Cards\" + Card + ".png";
    int order = 0;

    switch (cardNum)
    {
        case 1:
            pb.Location = new Point(0, 0);
            order = 5;
            break;
        case 2:
            pb.Location = new Point(60, 0);
            order = 4;
            break;
        case 3:
            pb.Location = new Point(120, 0);
            order = 3;
            break;
        case 4:
            pb.Location = new Point(180, 0);
            order = 2;
            break;
        case 5:
            pb.Location = new Point(240, 0);
            order = 1;
            break;
    }

    AddPlayerCard(pb, order);
}

public void AddPlayerCard(PictureBox pb, int order)
{
    pnlPlayer.Controls.Add(pb);
    pnlPlayer.Controls.SetChildIndex(pb, order);
}

编辑

使用Sinatr的想法,我现在使用.Tag控件属性为每个控件提供z序号,然后每当我添加控件时-只需遍历每个控件并设置z-order = .Tag属性

private void DealPlayerCard(int cardNum)
{
    string Card = Classes.Deck.GetCurrentCardPicture();
    PictureBox pb = new PictureBox() { Width = 172, Height = 240, SizeMode = PictureBoxSizeMode.StretchImage };
    pb.ImageLocation = @"Cards\" + Card + ".png";

    switch (cardNum)
    {
        case 1:
            pb.Location = new Point(0, 0);
            pb.Tag = 5;
            break;
        case 2:
            pb.Location = new Point(60, 0);
            pb.Tag = 4;
            break;
        case 3:
            pb.Location = new Point(120, 0);
            pb.Tag = 3;
            break;
        case 4:
            pb.Location = new Point(180, 0);
            pb.Tag = 2;
            break;
        case 5:
            pb.Location = new Point(240, 0);
            pb.Tag = 1;
            break;
    }

    AddPlayerCard(pb);
    AddToHand("Player");
}

public void AddPlayerCard(PictureBox pb)
{
    pnlPlayer.Controls.Add(pb);
    foreach (Control Control in pnlPlayer.Controls)
    {
        pnlPlayer.Controls.SetChildIndex(Control, Int32.Parse(Control.Tag.ToString()));
    } 
}
贾济莫夫

您可以使用BringToFront()每个Winform控件都可用方法:

controlName.BringToFront();

这会将控件controlName置于z顺序的顶部,强制其z顺序为0。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

向嵌套面板添加控件的顺序是否正确?

在项目控件中设置换行面板时添加边框

在面板上动态添加控件时的奇怪行为

更新面板未添加新控件,但显示了新控件

将控件添加到设计器中用户控件上的面板

将z-index设置为传单中的图层控件

是否可以将<SearchBar>控件添加到<ToolbarItem>?

按Enter时将Focus设置为DataGridTemplateColumn子控件

是否可以使react-bootstrap-pagination始终显示分页控件,即使总页数为1?

将控件添加到面板时,C# 索引不可预测

在子面板中放置控件并使用jquery添加新Div

有什么方法可以将焦点设置在Tab键按下时的特定html控件上吗?

是否可以通过xPages API访问重复控件内部的面板?

将控件添加到新类

将值设置为aria控件输入

使用Kotlin时FXML控件始终为null

WPF控件始终呈现为网页顶部

防止标题位于页面底部,但不将其设置为始终位于新页面顶部

在运行时将控件添加到用户控件的内部面板

始终将JDesktopPane中包含的JPanel设置为始终位于顶部

将控件添加到窗口时,用户控件上的按钮大小会发生变化

是否可以将Windows Forms控件的相同实例添加到多个容器?

在M10上,将“通知”设置为UR角中的默认控件/通知吗?

在M10上,将“通知”设置为UR角中的默认控件/通知吗?

Xamarin形式:将Focus设置为Entry控件时,出现System.ObjectDisposedException

将git设置为Version控件时,RStudio提供“错误的功能”

是否可以将缩放控件移动到OSMdroid屏幕上的其他位置

遍历控件时设置控件属性

将C#WinForm Stop控件属性设置为默认值时将其设置为默认值