1

Winform アプリではデザイン時に一部の標準項目 (textBox など) しかToolStripコントロールに追加できないため、次のようにDateTimePickerコントロールを動的に追加しましたが、選択した項目の日時値にアクセスする方法がわかりません。コントロールの日付

var datePicker = new ToolStripControlHost(new DateTimePicker());
toolStrip1.Items.Add(datePicker);

上記のように引き続き機能する次のことを試しましたが、追加されたdateTimePickerの選択された日付値にアクセスできません:

DateTimePicker myDateTimePicker = new DateTimePicker();
var datePicker = new ToolStripControlHost(myDateTimePicker);
toolStrip1.Items.Add(datePicker);

このMSDN チュートリアルでは、アイテムを ToolStrip に動的に追加する方法について説明していますが、それ以外は何も説明していません。

4

1 に答える 1

1

この方法ValueChangedでイベントを処理できます。DateTimePicker

private void Form1_Load(object sender, EventArgs e)
{
    var item = new ToolStripControlHost(new DateTimePicker());
    ((DateTimePicker)item.Control).ValueChanged += ToolStripDatePicker1_ValueChanged;
    item.Name = "ToolStripDatePicker1";
    toolStrip1.Items.Add(item);
}
private void ToolStripDatePicker1_ValueChanged(object sender, EventArgs e)
{
    var datePicker = (DateTimePicker)sender;
    MessageBox.Show(datePicker.Value.ToString());
}

DateTimePickerまた、別のオプションとして、次の方法で別のボタン クリック イベント ハンドラーでコントロールを見つけることができます。

private void toolStripButton1_Click(object sender, EventArgs e)
{
    var item = ((ToolStripControlHost)this.toolStrip1.Items["ToolStripDatePicker1"]);
    var datePicker = (DateTimePicker)item.Control;
    MessageBox.Show(datePicker.Value.ToString());
}

注:より良い解決策は、から派生することToolStripControlHostです。このようにして、必要なプロパティとイベントを公開できます。たとえば、埋め込みコントロールのValueプロパティとイベントを公開できます。ValueChangedDateTimePicker

MSDN の例「方法: ToolStripControlHost を使用して Windows フォーム コントロールをラップする」では、ホストするカスタム コントロールを作成する方法を示していますToolStripToolStripDateTimePickerこの例を使用して、カスタムコントロールを簡単に作成できます。

于 2017-05-06T19:43:29.643 に答える