メインフォームのスタイル値をダイアログボックスに渡す簡単な方法があるかどうかは不思議でした。c#WinForms - メインウィンドウのスタイルをダイアログボックスに渡す
私のアプリケーションには、すべての異なるコントロールタイプに対してユーザーが設定できるスタイルプロパティがあります。 ForeColor
,BackColor
、ボタンForeColor
、ボタンBackColor
、ボタンFlatStyle
など。私は、ダイアログボックスが同じ、一貫したスタイルを共有したい。
現時点では、これらのプロパティのそれぞれをこのようなダイアログボックスに渡します。
(この例では、より簡単なダイアログ形式のいずれかを示し、いくつかは、複数の制御タイプと、より多くのスタイルプロパティを持っている)
using System;
using System.Drawing;
using System.Windows.Forms;
namespace MyApplication
{
public partial class ConfirmDialog : Form
{
public Color ButtonBackColour { private get; set; }
public Color ButtonForeColour { private get; set; }
public FlatStyle ButtonFlatStyle { private get; set; }
public string Message { private get; set; }
public ConfirmDialog()
{
InitializeComponent();
}
private void ConfirmDialog_Load(object sender, EventArgs e)
{
buttonYES.ForeColor = ButtonForeColour;
buttonCancel.ForeColor = ButtonForeColour;
buttonYES.BackColor = ButtonBackColour;
buttonCancel.BackColor = ButtonBackColour;
buttonYES.FlatStyle = ButtonFlatStyle;
buttonCancel.FlatStyle = ButtonFlatStyle;
lblMsg.Text = Message;
}
}
}
[OK]を、今私は、ダイアログ初期化子を保持するために使用する静的クラスを持っています。
そして最後に、これは私が含まれる必要があり、引数の混乱です...
private void buttonDelete_Click(object sender, EventArgs e)
{
if (ShowDialog.ConfirmDialog("Are you sure you want to delete...?", this.ForeColour, this.BackColour, buttonDelete.BackColour, buttonDelete.ForeColour, buttonDelete.FlatStyle))// any button from main form will do
{
// Delete stuff...
}
}
静的クラスが冗長である場合、私はわからないですが、それは時に物事が非常に簡単になりますダイアログボックスがマウントを開始します。
これらの個々のスタイルプロパティをすべて渡す必要はなく、よりクリーンな方法があるかどうか疑問に思っていました。私はForm.Styleプロパティがないことを知っています。私はそれを作ることができると思います。しかし、私は何かが欠けているかどうかをGurusと最初に確認したいと思っていました。
既に静的なクラスが用意されているので、ButtonBackColour、ButtonForeColourなどのすべてのプロパティを保持しておくことができます。あなたのフォームでそれらを定義し、すべてのダイアログにそれらを渡すのではなく、あなたのダイアログとあなたのフォームの両方のためにそれらを使用してください。 –
@ElementalPete私はそれが好きです!なぜそれを答えとして追加しないのですか? – n00dles
完了! upvoteありがとう:) –