PDA

View Full Version : چگونگی تعمیم کدها در سی شارپ



hamidtmu
چهارشنبه 14 آذر 1397, 16:31 عصر
با سلام خدمت استادان سی شارپ
من یک برنامه نوشتم که برای به دست اوردن یک عدد(مجموع) سه عدد تکس باکس قرار دارد که از دو رنج خاص عدد می گیریند این دو تکس باکس
می خواستم این خاصیت را به تعداد 300 ردیف دیگه(کادر مشکی یک ردیف است) تعمیم بدم . انجام به صورت تکی خیلی سخته. ممنون میشم کسی راهنمایی کنه به چه صورت این کار و انجام بدم

این عکس

149379

اینم کدایی که نوشتم
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication17
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
System.Random rnd = new System.Random();

int a1, a2, a3;
int t1 = Convert.ToInt32(textBox1.Text);
int t2 = Convert.ToInt32(textBox2.Text);
int t3 = Convert.ToInt32(textBox7.Text);
int t4 = Convert.ToInt32(textBox8.Text);

int sum = Convert.ToInt32(textBox3.Text);



a1 = rnd.Next(t1, t2);
a2 = rnd.Next(t3, t4);
a3 = sum - (a1 + a2);



textBox4.Text = a1.ToString();
textBox5.Text = a2.ToString();
textBox6.Text = a3.ToString();
}




private void textBox7_TextChanged(object sender, EventArgs e)
{

}
}
}

alexmcse
چهارشنبه 14 آذر 1397, 20:51 عصر
سوال شما نا مفهوم است

mmbguide
چهارشنبه 14 آذر 1397, 22:02 عصر
شما میتونید با استفاده از کد نویسی و در زمان اجرای برنامه TextBox ایجاد کنید و Handler رو هم معرفی کنید و اگر هم تعداد زیادی TextBox دارید میتونید از Panel و یا هر Container مناسبتری استفاده کنید و در زمان جمع زدن مقادیر با استفاده از حلقه در بین تمام TextBox ها، مقادیرشون رو بگیرید و جمع کنید.

hamidtmu
چهارشنبه 14 آذر 1397, 22:16 عصر
دوست عزیز فکر خوبیه که بشه هنگام اجرای برنامه تکست باکس ایجاد کرد مثلا با زدن تعداد 300 تا تکس باکس . این تعدادو بسازه و یک فرمول بتوان براشون یه گوشه نوشت. ولی از درک من این کار خارجه غیر از اینکه یک نمونه کار ببینم و شبیهش بزنم. ممنون میشم راهنمایی بفرمایید(ما از مبتدی هم مبتدی تریم):لبخند:
حقیقتا من باید برای 1000 تا عدد این کار رو انجام بدم ولی نمیدونم
ممنون میشم کسی کمک کنه
1000 تا تکس باکس مجموع)هست که جمع چند تکس باکس هست. باید به صورت تصادفی اعدادی(مثلا اعداد 1-2-3-4) در این چند تکس باکس قرار بگیره که جمعشون بشه( تکس باکس مجموع)

توی پست قبلی من فقط یه دونه ساختم و 1000 تا سخته.

mmbguide
پنج شنبه 15 آذر 1397, 07:10 صبح
پس زحمت بکش یکم مسئله رو واضحتر بگو تا ببینم چقدر میتونم کمکت کنم. کمی این توضیحات مبهم هستند.

mmbguide
پنج شنبه 15 آذر 1397, 07:20 صبح
اما برای افزودن textbox با استفاده از کد یک فرم ایجاد کن و یک Flow Layout Panel روی فر قرار بده و ویژگی AutoScroll رو True تظیم کن. حالا یه دکمه هم به فرم اضافه کن و کد زیر رو تو رویداد کلیک دکمه بنویس:


TextBox txt = new TextBox() ;
txt.BackColor = Color.White;
this.flpTextBox.Controls.Add(txt);



با هر بار کلیک، برنامه یک TextBox اضافه میکنه. این رو به عنوان مرحله اول دنبال کن و پارامترهای خودت رو اعمال کن

محمد آشتیانی
پنج شنبه 15 آذر 1397, 13:15 عصر
سلام
عدد مجموع برای همه ردیف ها مقدار ثابتی هست؟

hamidtmu
پنج شنبه 15 آذر 1397, 14:42 عصر
خیر مقدار ثابتی نیستند.ولی ممکنه تکراری باشند

hamidtmu
پنج شنبه 15 آذر 1397, 14:43 عصر
درسته با این فرض که تکست باکس هم درست شد چه طوری بگم که عدد مجموع برابر با اعداد تصادفی باشند که در سه تکست باکس باشه.البته برای یه دونه خودم زدم .برای تعمیم به 1000 تا مشکل دارم

mmbguide
پنج شنبه 15 آذر 1397, 15:14 عصر
خب حالا بفرمایید سه عدد تصادفی بعد از مقادیر موجود در 1000تا textbox باید تعیین بشوند و یا اینکه مقادیر 1000تا textbox بعد از تعیین سه عدد تصادفی مشخص می شوند؟

hamidtmu
پنج شنبه 15 آذر 1397, 15:52 عصر
خب حالا بفرمایید سه عدد تصادفی بعد از مقادیر موجود در 1000تا textbox باید تعیین بشوند و یا اینکه مقادیر 1000تا textbox بعد از تعیین سه عدد تصادفی مشخص می شوند؟

149386

تو این عکس سعی کردم کامل توضیح بدم
1- 1000 تا عدد داریم
2- برای هر عدد 3 ستون هست
3- رنج عدد داریم

این اعداد 1000 تا از قبل مشخص شدند و در یک ستون قرار دارند که میشه ستون مجموع
سه ستون دیگه هست که باید اعداد تصادفی از رنج مشخص درون اونا قرار بگیره و حاصل جمعشون برابر با عدد مجموع باشه
============
یه نکته که خیلی هم اهمیت داره اگه داینامیک باشه خیلی عالی میشه مثلا قابلیت تغیر رنج، تغیر تعداد تکس های تصادفی از سه تا به هر تعداد و افزایش و کاهش تعداد ردیف ها

امیدوارم خوب منظورم را رسونده باشم

محمد آشتیانی
پنج شنبه 15 آذر 1397, 17:18 عصر
سلام
این نمونه رو ببینید (البته برای هزار آیتم خطا میده (به خاطر تولید این تعداد کنترل)

برای شبیه سازی اعداد مجموع شما ، یک متد نوشتم به اسم GenerateSums ، که به تعداد پارامتر ورودی ، اعداد تصادفی در رنج 200 الی 1000 تولید میکنه
بقیه ورودی ها ، اعم از تعداد انجام این عمل و رنج های ستون اول و دون رو هم در فرم ، از کاربر دریافت میکنم.
احتمالا کارتون راه خواهد افتاد ، یا دست کم ایده بهتون میده.

محمد آشتیانی
پنج شنبه 15 آذر 1397, 17:27 عصر
اگر الزامی در مورد استفاده از تکست باکس ندارید ، می تونید همین کار رو در یک دیتاگرید انجام بدید که محدودیتی هم برای تعدادش نداشته باشه و برنامه روانتر و سریعتر اجرا بشه

hamidtmu
پنج شنبه 15 آذر 1397, 17:57 عصر
سلام. دیدم خیلی عالیه فقط این وسط یه مشکل هستد . اونم اینه که مجموع را من باید بدم نرم افزار طبق اون عدد های تصادفی را بارگزاری کنه
------
یه نکته دیگه هم که هست. با دیتا گرید ویو اصلا مشکلی ندارم. تو اون زمینه اگه بشه که خیلی بهتره
بابت این که وقت گذاشت بی نهایت سپاسگزارم

محمد آشتیانی
جمعه 16 آذر 1397, 12:53 عصر
خب مجموع رو خودتون بدید ، به جای اون کدی که من نوشتم تا یکسری عدد بعنوان مجموع تولید کنه
قرار نبوده و نیست که ما به جای شما برنامه بنویسیم ، خودتون هم باید یک تلاش کوچکی بفرمائید ، تغییر دادن کد بالا خیلی سادست

hamidtmu
جمعه 16 آذر 1397, 15:51 عصر
تشکر متوجه شدم. دارم روش کار میکنم بازم تشکر از وقتی که گذاشتید. خیلی ارزشمند بود