Tag: 面板

如何在C#中创建横幅面板?

我想创建自己的自定义控件,它基本上是一个包含3行和1列的TableLayoutPanel。 顶部和底部行将包含标签(横幅),中间行是我将添加其他控件的位置。 问题是,当我尝试从此控件构建其他窗体/控件时,设计器无法识别中间面板。 我怎么得到它? 如果我将文本框拖到中间并设置Dock = Fill,它将覆盖entrie表单/控件。 此外,有没有办法让设计师拒绝将控件拖动到顶部和底部(横幅)行? 我已经尝试了以下链接中的步骤,但没有任何运气( http://support.microsoft.com/?scid=kb%3Ben-us%3B813450&x=21&y=15 )。

C#如何设计面板供以后使用..(设置屏幕)

所以我正在制作一个设置屏幕,我左边有一棵树,右边是一个面板。 屏幕上的面板取决于所选的树项目。 只是想知道如何设计这些面板并保存主题以供以后使用(运行时)。 我是否需要去绘制它们等等。查看代码然后复制到类或其他东西? 对不起,如果我的问题有点模糊,但我不确定我想要什么:-O 编辑是的,我正在寻找像Visual Studio中找到的设置屏幕。 左侧的树(类似于资源管理器),然后是每个树节点的新表单布局。

C#WinForms:使面板滚动条不可见

我有一个使用AutoScroll = true的panel1 。我必须使用btnUp和btnDown进行panel1滚动。 到目前为止,我已经做了我的要求 private void btnUpClicked(Object sender, EventArgs e) { if (panel1.VerticalScroll.Value – 55 > 0) panel1.VerticalScroll.Value -= 55; else panel1.VerticalScroll.Value = 0; } private void btnDownClicked(Object sender, EventArgs e) { panel1.VerticalScroll.Value += 55; } 但现在我需要隐藏Scrollbar或使其不可见。 我试过了 panel1.VerticalScroll.Visible = false; 但它不起作用。 任何想法的家伙?

如何为新的Panel Class重用现有的Layouting Code?

tl; dr:我想重用自定义WPF面板类的预定义WPF面板的现有布局逻辑。 这个问题包含四种不同的尝试来解决这个问题,每个尝试都有不同的缺点,因而有不同的失败点。 此外,还可以找到一个小型测试用例。 问题是:我如何正确实现这一目标 定义我的自定义面板 内部重用另一个面板的布局逻辑,没有 遇到我试图解决这个问题所描述的问题? 我正在尝试编写自定义WPF 面板 。 对于这个面板类,我想坚持推荐的开发实践并维护一个干净的API和内部实现。 具体地说,这意味着: 我想避免复制和粘贴代码; 如果代码的几个部分具有相同的function,则代码应该只存在一次并重复使用。 我想应用适当的封装,让外部用户只能访问可以安全使用的成员(不破坏任何内部逻辑,或者不泄露任何内部实现特定的信息)。 至于目前,我将密切关注现有的布局,我想重新使用另一个面板的布局代码(而不是再次编写布局代码,如此处所示 )。 为了举个例子,我将基于DockPanel解释,虽然我想知道如何基于任何类型的Panel 。 为了重用布局逻辑,我打算在我的面板中添加一个DockPanel作为可视子项,然后它将保持并布局我的面板的逻辑子项。 我已经尝试了三种不同的想法如何解决这个问题,并在评论中提出了另一个想法,但到目前为止,每个想法都在不同的点上失败了: 1)在自定义面板的控件模板中引入内部布局面板 这似乎是最优雅的解决方案 – 这样,自定义面板的控制面板可以使用ItemsControl其ItemsPanel属性使用DockPanel ,其ItemsSource属性绑定到自定义面板的Children属性 。 不幸的是, Panel不从Controlinheritance,因此没有Template属性 ,也没有控件模板的function支持。 另一方面, Children属性是由Panel引入的,因此不会出现在Control ,我觉得打破预期的inheritance层次结构并创建一个实际上是Control的Panel ,而不是Panel ,可能会被认为是hacky 。 2)提供我的面板的子列表,该列表仅仅是内部面板的子列表的包装器 这样的课程如下所示。 我在我的面板类中已经子类化了UIElementCollection ,并从一个重写版本的CreateUIElementCollection方法返回它。 (我只复制了这里实际调用的方法;我已经实现了其他方法来抛出NotImplementedException ,所以我确信没有调用其他可重写的成员。) using System; using System.Windows; using System.Windows.Controls; namespace WrappedPanelTest { public class TestPanel1 […]

在C#中更改tabpages时,如何将面板设置为始终位于顶部?

我在TabController中有两个选项卡的程序,我也有一个我想要一直在前面的面板。 尽管我在哪个标签页面。我尝试将面板设置为BringToFront() ,但是当我更改tabpage时,这似乎不起作用。 有什么建议怎么解决这个?

141是可以同时动画的WPF面板项的最大数量吗?

我在C#中设计了几个动画Panel ,它们都是从一个基类inheritance的,它在Panel.Children上执行实际的动画。 直到最近,他们都完美地工作了…但是最近,我使用的是一个包含大量项目的集合,我开始得到一些奇怪的视觉错误。 当应用程序首次加载项目时,第一个x项目正确显示,然后剩余部分全部显示在第一个位置(彼此顶部)。 如果我调整窗口大小或选择一个项目,它们都会重新排列以便正确显示。 (使用下面的示例代码,您必须调整窗口大小才能看到它们自己正确。) 经过大量的讨论和调试,我发现正确的值仍然是每个项目的动画代码,但最后的x项根本没有动画。 每个项目肯定会通过动画代码,但最后的x项目保留在动画Panel.ArrangeOverride方法中设置的位置。 为了尝试在我的代码中找到问题,我创建了一个新的UserControl和动画Panel类,其中包含重新创建问题所需的最少代码。 这样做后,我很惊讶这个问题仍然可以重现。 在我的示例代码中有141个项目,没有显示问题,但不再显示问题。 请原谅长长的代码行,但有很多东西要显示。 AnimatedStackPanel.cs类 public class AnimatedStackPanel : Panel { protected override Size MeasureOverride(Size availableSize) { double x = 0, y = 0; foreach (UIElement child in Children) { child.Measure(availableSize); x = Math.Max(x, availableSize.Width == double.PositiveInfinity ? child.DesiredSize.Width : availableSize.Width); y += child.DesiredSize.Height; } return new […]

获取滚动位置百分比

我需要能够确定用户何时滚动了面板中60%的内容,而且我没有太多运气找到解决方案。 提前感谢任何想法。

属性设置后具有相同的值

问: 我在.aspx文件中有一个面板的visibility = false,在我的代码中的某个时刻,我设置的visibility = true。 但问题是 :当我跟踪代码时,我发现visible属性仍然等于false,尽管我设置了它为真。 我的面板名称是: pnl_DetailsGeneral protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) { if (RadioButtonList1.SelectedValue == “2”) { drp_Week.Enabled = false; gv_Details.Visible = false; panel_rmv.Visible = false; pnl_DetailsGeneral.Visible = true;//Here when i put a break point and after setting visible to true i find `pnl_DetailsGeneral.Visible = false` gv_DetailsGeneral.Visible = true; BindGridGeneral(); […]

在.Update()调用后绘制到面板

在调用panel.Update()后,我在尝试立即绘制到面板时遇到问题。 这是代码: public void AddAndDraw(double X, double Y){ AddPoint (X, Y); bool invalidated = false; if (X > _master.xMaxRange) { _master.Update (); invalidated = true; } if (Y > _master.yMaxRange) { _master.Update (); invalidated = true; } if (!invalidated) { _master.UpdateGraph (this); } else { _master.PaintContent (); } } 运行此问题时,我只看到已清除的面板,而不是他正在尝试在.PaintContent()方法中绘制内容。 我已经尝试在面板上使用.Invalidate()和.Refresh()而不是.Update() 对于如何解决这个问题,有任何的建议吗?

为什么只有第一个RadioButton被添加到GroupBox?

我试图动态创建Windows控件并将其添加到Panel。 对于Button和Checkbox,这个工作正常; 我遇到了GroupBox的问题,但里面有RadioButtons。 创建第一个RadioButton元素并将其添加到预期位置的GroupBox中,但是虽然表面上是创建的(通过代码逐步执行,但是它们是不可见的)。 我认为,如果随后的RadioButton被放在前面的那个上面,那么最后一个就是看到的那个。 这就是它的样子: 每个〜-delimited val应该是radioButton的文本值,但只显示一个。 我是否需要为后续的RadioButtons显式提供位置值,或者为什么会失败? 这是代码: private GroupBox getGroupBox(string currentSettings, int curLeftVal) { // “apple~orange~peach~True (must look for “enclose group in a black box” as the last val (ignore for the quick-and-dirty mockup, though)) List grpbxVals = new List(currentSettings.Split(‘~’)); GroupBox gb = new GroupBox(); gb.Height = 60; gb.Location = new Point(curLeftVal, […]