
毎度お世話になっております。
何の手も加えていないフォームに自分で作った
ユーザコントロールを張り付け、そのコントロールからイベントが
発生したら、親フォームを閉じるようにしたいと思っています。
下記にサンプルを記述します。
フォーム側(using文、Designer文は省略)
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private string[] stLines =
{
"こんにちは。",
"こんばんは。",
"おはよう。",
"さようなら。",
"おやすみなさい。",
};
public Form1()
{
InitializeComponent(); // 省略
JLabel j = new JLabel(stLines);
j.Dock = DockStyle.Fill;
this.Controls.Add(j);
}
}
}
ユーザコントロール側(Labelを継承)
namespace WindowsFormsApplication1
{
public class JLabel : Label
{
private string[] stLines = null;
private int lineNo = 0;
public JLabel(string[] Lines)
{
this.Click += new System.EventHandler(this.Jlabel_Click);
this.stLines = Lines;
this.lineNo = 0;
}
private void Jlabel_Click(object sender, EventArgs e)
{
this.lineNo++;
if (this.stLines.Length > this.lineNo)
{
this.Text = this.stLines[this.lineNo];
}
else
{
//ここでイベントを発生させたい
//this.lineNo = 0;
}
}
}
}
上記のように、渡された文字列をもとに、クリックするごとに次の行を
表示するプログラムですが、行番号が行数を超えた場合にイベントを
発生させて、それを親のフォームが監視し、受け取った際にフォームを
閉じるといった処理をさせたいのです。
親のフォームにクリックイベントを仕掛ければ楽ではありますが、
子供のコントロールからの信号を、親が受け取る…といった流れにしたいのです。
以上、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
C#の文法書を読めば,イベントの作成方法は書いていませんか。
推奨される手順は,次のような感じでしょうか。
・イベントをメンバーとして定義する
public event EventHandler Foo;
・イベントを呼び出すメソッドを定義する
protected virtual void OnFoo (EventArgs e)
{
if (Foo != null)
{
Foo(this, e);
}
}
あとは,イベントを発生させたいところでOnFooを呼び出せばよいです。
イベント引数に情報を載せたいのであれば,EventArgsを派生させたHogeEventArgsを用意して,
イベントの型をEventHadnler<HogeEventArgs>にします。
ref) http://msdn.microsoft.com/ja-jp/library/vstudio/ …
ref) http://msdn.microsoft.com/ja-jp/library/vstudio/ …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAでListViewが使用できない
-
ExcelVBAのコントロールの種類...
-
'ckbl' コントロールは作成され...
-
カメラスクロールするのを動画...
-
OCXって何ですか?
-
C# ユーザコントロール内のボタ...
-
chr関数の呼び出しで「プロ...
-
vb.netで画面のコントロールId...
-
EXCELでactivexコントロールを...
-
C# Form上に配置されたコントロ...
-
VBAでドラッグ・アンド・ドロップ
-
間違えて配置してしまったコン...
-
ActiveX コントロールの初期化
-
C# FlowLayoutPanelにて
-
MSComm コントロールのエラーに...
-
USB I/Oのデジタル信号をvbaで...
-
エクセル・VBA CheckBoxのオブ...
-
コンボボックスの文字によるif...
-
ACCESSでコモンダイアログを使...
-
ActiveX DLL と ActiveXコント...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELでactivexコントロールを...
-
'ckbl' コントロールは作成され...
-
エクセルVBAでオプションボタン...
-
ExcelVBAでListViewが使用できない
-
カメラスクロールするのを動画...
-
VBA ユーザーフォームの Keypre...
-
Excel VBA で Richtextboxを使...
-
エクセル・VBA CheckBoxのオブ...
-
チェックボックスをオンにした...
-
vb.netで画面のコントロールId...
-
コントロールを移動できない
-
OCXって何ですか?
-
C#で角が丸いテキストボックス
-
ユーザーフォームで動的(Me.Con...
-
C# Form上に配置されたコントロ...
-
ExcelVBAのコントロールの種類...
-
chr関数の呼び出しで「プロ...
-
変数をコントロール型で使用す...
-
ActiveXコントロールはどこへい...
-
Groupboxの配下のコントロール...
おすすめ情報