GTK 等同于 System.Windows.Forms 的 Control.Controls
GTK equivalent to Control.Controls from System.Windows.Forms
我正在尝试找到 Control.Controls 的 GTK 等效项,它仅在 System.Windows.Forms 中可用,ControlCollection 也是如此。
所以我想知道是否有人知道与此等效的 GTK,或者是否有在 GTK 中制作类似内容的解决方案?因为这些函数具有添加和删除等功能,但我找不到这方面的类似内容。
我现在想要更改的代码是这样的:
private void CreatePianoKeys()
{
// If piano keys have already been created.
if (keys != null)
{
// Remove and dispose of current piano keys.
foreach (PianoKey key in keys)
{
Controls.Remove(key);
key.Dispose();
}
}
keys = new PianoKey[HighNoteID - LowNoteID];
whiteKeyCount = 0;
for (int i = 0; i < keys.Length; i++)
{
keys[i] = new PianoKey(this);
keys[i].NoteID = i + LowNoteID;
if (KeyTypeTable[keys[i].NoteID] == KeyType.White)
{
whiteKeyCount++;
}
else
{
keys[i].NoteOffColor = Color.Black;
keys[i].BringToFront();
}
keys[i].NoteOnColor = NoteOnColor;
Controls.Add(keys[i]);
}
}
因为我目前正在尝试将 UI 从 WinForms 更改为 GTK,因此它可以在 Linux 发行版上工作。
如有任何帮助,我们将不胜感激!谢谢!
是的,但就像在 .NET 中一样,在 GTK 中,只有某些类型的小部件(.NET-speak 中的“控件”)可以指定其子项(如示例中的 ControlCollection
) .这些父控件通常是从 Gtk.Container
基础 class 派生的对象,它实现了 Gtk.Buildable
接口。
您可以使用其 Add()
或 Remove()
方法向任何 Container 对象添加子项,就像在 C# 中对 ControlCollection
对象所做的那样。由于这是一架钢琴,您可以使用 Gtk.Box
(或它的子 class),这是一个容器,如果指定为 back-to-back,则在单行中显示其子部件 back-to-back =24=]。因为我不知道你的 class 是什么类型的 PianoKey
,所以我无法在 GTK 中推荐一个好的替代方案,但希望能有所帮助。
我正在尝试找到 Control.Controls 的 GTK 等效项,它仅在 System.Windows.Forms 中可用,ControlCollection 也是如此。
所以我想知道是否有人知道与此等效的 GTK,或者是否有在 GTK 中制作类似内容的解决方案?因为这些函数具有添加和删除等功能,但我找不到这方面的类似内容。
我现在想要更改的代码是这样的:
private void CreatePianoKeys()
{
// If piano keys have already been created.
if (keys != null)
{
// Remove and dispose of current piano keys.
foreach (PianoKey key in keys)
{
Controls.Remove(key);
key.Dispose();
}
}
keys = new PianoKey[HighNoteID - LowNoteID];
whiteKeyCount = 0;
for (int i = 0; i < keys.Length; i++)
{
keys[i] = new PianoKey(this);
keys[i].NoteID = i + LowNoteID;
if (KeyTypeTable[keys[i].NoteID] == KeyType.White)
{
whiteKeyCount++;
}
else
{
keys[i].NoteOffColor = Color.Black;
keys[i].BringToFront();
}
keys[i].NoteOnColor = NoteOnColor;
Controls.Add(keys[i]);
}
}
因为我目前正在尝试将 UI 从 WinForms 更改为 GTK,因此它可以在 Linux 发行版上工作。
如有任何帮助,我们将不胜感激!谢谢!
是的,但就像在 .NET 中一样,在 GTK 中,只有某些类型的小部件(.NET-speak 中的“控件”)可以指定其子项(如示例中的 ControlCollection
) .这些父控件通常是从 Gtk.Container
基础 class 派生的对象,它实现了 Gtk.Buildable
接口。
您可以使用其 Add()
或 Remove()
方法向任何 Container 对象添加子项,就像在 C# 中对 ControlCollection
对象所做的那样。由于这是一架钢琴,您可以使用 Gtk.Box
(或它的子 class),这是一个容器,如果指定为 back-to-back,则在单行中显示其子部件 back-to-back =24=]。因为我不知道你的 class 是什么类型的 PianoKey
,所以我无法在 GTK 中推荐一个好的替代方案,但希望能有所帮助。