オリジナルのWindowsアプリケーション作成サービスを提供しています。
自社の業務にあった専用のアプリを作成して、業務を効率化しませんか?
まずはお気軽にご相談ください。お問い合わせ
カテゴリー: C#
【C#】【VB.NET】サンプルアプリ開発サービス
ココナラで、C#またはVB.NETによるサンプルアプリの開発サービスを出店しております。
プログラム学習中などでつまずいてしまった場合に、お気軽にご利用ください。
【C#】DLLのカスタムコントロールを参照しようとすると「ツールボックスに配置できるコンポーネントが何もありません。」が表示される
現象
Visual Studio 2013 Update5/Windows10にて発生。
カスタムコントロールが存在するDLLを参照設定したが、ツールボックスに表示されない。
ツールボックスを右クリック→アイテムの選択→.NET Frameworkコンポーネントの、「参照」ボタン押下にてDLLを指定すると、「ツールボックスに配置できるコンポーネントが何もありません。」が表示され、ツールボックスに追加できない。 続きを読む 【C#】DLLのカスタムコントロールを参照しようとすると「ツールボックスに配置できるコンポーネントが何もありません。」が表示される
【C#】【VB.NET】電卓アプリのソースコード提供サービス
概要
Visual Studio2022(Windowsフォーム)で作成した、電卓アプリとその全ソースコードをお渡しいたします。
電卓は簡単なように見えますが、実際には複雑な処理を記載しなければならず、初心者にはハードルが高いです。
お渡しするソースコードには、すべてコメントを記載しておりますので、コードの実践的な学習に最適です。
実現している機能
- 四則演算(足し算、引き算、掛け算、割り算)
- 小数点を含む数値
- マイナス値
- テンキーからの操作(数字キー、演算子含む)
- Cボタン(左辺、演算子、右辺のすべての入力値を消す)
- CEボタン(現在入力中の値を消す)
- 整数部の3桁区切り(123,456.789 形式で表示)
- Ctrl+Cによる画面に表示されている内容をクリップボードへコピー
- Ctrl+Vによるクリップボードの内容を画面に貼り付け
- 履歴表示機能
注意事項
プログラミング(コーディング)入門者向けのサンプルソースになります。ご購入頂いた個人でのご利用は問題ありませんが、第三者への公開は不可となります。また、著作権は譲渡いたしません。
お渡しするソースコードは以下の何れか1つになります。サービスご購入後、どれをご希望かをメッセージで教えてください。
①C# + .NET 6
②C# + .NET Framework 4.8
③VB.NET + .NET 6
④VB.NET + .NET Framework 4.8
お試し動作確認
お渡しするソースから作成したEXEはこちらからお試しダウンロードできます
※ダウンロード後、Zipファイルを解凍する前に、ファイルを右クリック→全般タブの一番下のセキュリティの「許可する」にチェックを入れて、「OK」ボタンをクリックした後に、解凍してください。
ご購入はこちらからどうぞ
【C#】【VB.NET】ソースコードを相互変換する
C#からVB.NET、またはVB.NETからC#のコードに変換するには、Code Converterがとても優秀です。
いくつか実際のコードで試したところ、変換後のコードで問題なく動作しました。
お試しください。
【C#】DataGridViewで良く利用する設定たち
設定
//セルをクリックしただけで、入力カーソルを有効にする
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
//複数選択不可
dataGridView1.MultiSelect = false;
//セル選択ではなく、行全体選択
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
//一部の列を編集不可にする
dataGridView1.Columns[1].ReadOnly = true;
//ヘッダ列をクリックした際の並び替え禁止
foreach (DataGridViewColumn c in dataGridView1.Columns)
c.SortMode = DataGridViewColumnSortMode.NotSortable;
//ボタンの背景色が白くなってしまうのを防ぐ
DataGridViewCellStyle cellStyle = new DataGridViewCellStyle();
cellStyle.BackColor = SystemColors.Control; //ボタンの標準色を設定
Column3.DefaultCellStyle = cellStyle;
値取得
//選択された行のセル値取得
if (dataGridView1.SelectedCells.Count > 0)
{
int columnIndex = dataGridView1.SelectedCells[0].ColumnIndex; //選択列
int rowIndex = dataGridView1.SelectedCells[0].RowIndex; //選択行
string cellValue = "";
if (dataGridView1[columnIndex, rowIndex].Value != null)
{
cellValue = dataGridView1[columnIndex, rowIndex].Value.ToString(); //該当セルの値
}
}
セルを抜けなくてもCellValueChangedイベントを発生させる
private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dataGridView1.IsCurrentCellDirty)
{
//確定させる→セルを抜けなくてもCellValueChangedイベントが発生する
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
【C#】文字列から特定の末尾を除く【Trim,TrimEnd】
【C#】DataTableのSelect高速化
【C#】async/awaitを利用したマルチスレッド実装テンプレート
ボタン押下時の処理にて、以下のような要件を想定したサンプルです。
(.NET Framework4.5.1利用)
開始
↓
A処理
↓ ↓
B処理 C処理 ※
↓ ↓
D処理
↓
終了
※ここだけ並行処理可能なので、マルチスレッド化したい。
using System;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AsyncSample
{
/// <summary>
/// async/awaitの利用サンプル
/// </summary>
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// ボタン押下時に並行実行可能な処理をマルチスレッドで実行する
/// ※private void → private async void に変更
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void button1_Click(object sender, EventArgs e)
{
Console.WriteLine("最初に行う処理。これが終わるまではMainSampleは呼び出されない。");
//マルチスレッド処理(awaitを付けて、メソッド内の処理が終わるのを待っている)
await MainSample();
Console.WriteLine("最後に行う処理。MainSampleが終わった後に呼び出される。");
}
/// <summary>
/// 並行実行可能な処理
/// ※private void → private async Task に変更
/// </summary>
/// <returns></returns>
private async Task MainSample()
{
//task1の実行を開始
Task<string> task1 = Dummy(5, "task1");
//task2の実行を開始
Task<string> task2 = Dummy(1, "task2");
//task1とtask2の実行が終わるまで待つ
await task1;
await task2;
//それぞれのtaskの戻り値を取得
Console.WriteLine("task1の戻り値:" + task1.Result);
Console.WriteLine("task2の戻り値:" + task2.Result);
}
/// <summary>
/// 複数の引数を受け取り、処理結果を戻り値として返す
/// ※private void → private async Task<string> に変更。戻り値が不要の場合は、private async Task にする。
/// </summary>
/// <param name="i"></param>
/// <param name="s"></param>
/// <returns></returns>
private async Task<string> Dummy(int i, string s)
{
Console.WriteLine("処理開始:" + i);
string dummyText = await Task.Run(() =>
{
//何らかの重い処理・・・
System.Threading.Thread.Sleep(1000 * i);
return s + "の処理完了:" + DateTime.Now.ToString();
});
Console.WriteLine("処理完了:" + i);
return dummyText;
}
}
}

