Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
C#初心者の質問
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30982#CommentId86273
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
kai
 (高校生)
投稿日時
2024/8/6 17:02:44
C#初めてそんなに立っていないのですが、継承を使った処理を書いてみたくて作ったプログラムで、ボタンを押すとテキストのカードをFormに出して、そのカードはマウスでドラッグ移動できるみたいな感じで作りたかったんですが、うまくできませんでした。
public DraggableControl() : base()が参照0と表示されてるので多分動いてなくてこれが原因だと思いますが。
初心者の書いたよくわからないプログラムを見てくれる方がいたらお願いします。
using System.Drawing.Drawing2D;
using System.Windows.Forms;
using static マルチメモ帳.MainSystem;
namespace マルチメモ帳
{
public partial class MainSystem : Form
{
private List<DraggableRichTextBox> Textcards = new List<DraggableRichTextBox>();
private List<ImageCard> Imagecards = new List<ImageCard>();
public MainSystem()
{
InitializeComponent();
}
#region ボタン
private void AddCardButton_Click(object sender, EventArgs e)
{
DraggableRichTextBox newDraggableRichTextBox = new DraggableRichTextBox();
//RichTextBoxのサイズを決定
newDraggableRichTextBox.Size = new Size(200, 100);
newDraggableRichTextBox.Location = new Point(10, 30 + ((Textcards.Count + Imagecards.Count) * 120));
//RichTetxtBoxの初期プロパティを設定
newDraggableRichTextBox.BackColor = Color.White;
newDraggableRichTextBox.ForeColor = Color.Black;
//フォームに表示
this.cardPanel.Controls.Add(newDraggableRichTextBox);
//リストの内容を増やす
Textcards.Add(newDraggableRichTextBox);
}
private void AddImageButton_Click(object sender, EventArgs e)
{
}
#endregion
}
#region 生成
// DraggableControlクラス
// DraggableRichTextBoxクラス
public class DraggableRichTextBox : DraggableControl
{
public RichTextBox newRichTextBox = new RichTextBox();
public DraggableRichTextBox()
{
newRichTextBox.Dock = DockStyle.Fill;
newRichTextBox.BackColor = Color.White;
newRichTextBox.ForeColor = Color.Black;
newRichTextBox.BorderStyle = BorderStyle.Fixed3D;
this.Controls.Add(newRichTextBox);
}
}
// ImageCardクラス
public class ImageCard : DraggableControl
{
private PictureBox newImageCard = new PictureBox();
public ImageCard()
{
newImageCard.Dock = DockStyle.Fill;
newImageCard.SizeMode = PictureBoxSizeMode.StretchImage;
this.Controls.Add(newImageCard);
this.Size = newImageCard.Size; // ドラッグ可能なサイズに設定
}
public Image Image
{
get { return newImageCard.Image; }
set { newImageCard.Image = value; }
}
}
public class DraggableControl : Control
{
private Point mouseDownLocation;
public DraggableControl() : base()
{
this.MouseDown += DraggableControl_MouseDown;
this.MouseMove += DraggableControl_MouseMove;
this.MouseUp += DraggableControl_MouseUp;
}
private void DraggableControl_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mouseDownLocation = e.Location;
}
}
private void DraggableControl_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Left += e.X - mouseDownLocation.X;
this.Top += e.Y - mouseDownLocation.Y;
}
}
private void DraggableControl_MouseUp(object sender, MouseEventArgs e)
{
// ドラッグ終了時の処理があればここに追加
}
}
#endregion
}
わからなくてGPTで生成した部分が一部入ってるのでコメントとかのやつは気にしないでください。
public class DraggableControl : Controlは動いたことがないので、動作するかもわかってないです