Click here to Skip to main content
15,905,504 members
Home / Discussions / C#
   

C#

 
AnswerRe: C# Socket TCP - Change the client class to send the file, and the server receives the file. Pin
Afzaal Ahmad Zeeshan22-Oct-18 7:43
professionalAfzaal Ahmad Zeeshan22-Oct-18 7:43 
AnswerRe: C# Socket TCP - Change the client class to send the file, and the server receives the file. Pin
Richard MacCutchan22-Oct-18 21:37
mveRichard MacCutchan22-Oct-18 21:37 
QuestionCheque printing in winforms application using C# dotnet Pin
ccrenil20-Oct-18 1:43
ccrenil20-Oct-18 1:43 
AnswerRe: Cheque printing in winforms application using C# dotnet Pin
Afzaal Ahmad Zeeshan20-Oct-18 3:21
professionalAfzaal Ahmad Zeeshan20-Oct-18 3:21 
QuestionVery slow code in bar code reading Pin
Ali Alshihry19-Oct-18 14:57
Ali Alshihry19-Oct-18 14:57 
AnswerRe: Very slow code in bar code reading Pin
Dave Kreskowiak19-Oct-18 15:33
mveDave Kreskowiak19-Oct-18 15:33 
GeneralRe: Very slow code in bar code reading Pin
Ali Alshihry19-Oct-18 15:44
Ali Alshihry19-Oct-18 15:44 
GeneralRe: Very slow code in bar code reading Pin
Dave Kreskowiak19-Oct-18 15:58
mveDave Kreskowiak19-Oct-18 15:58 
Generalc# Identity Server 3: Set different Refresh Token Expiration for a specific user Pin
Member 1402363617-Oct-18 14:23
Member 1402363617-Oct-18 14:23 
QuestionApplication service with C#. Pin
Member 1401973516-Oct-18 20:55
Member 1401973516-Oct-18 20:55 
AnswerRe: Application service with C#. Pin
OriginalGriff16-Oct-18 21:16
mveOriginalGriff16-Oct-18 21:16 
GeneralRe: Application service with C#. Pin
Member 1401973516-Oct-18 22:09
Member 1401973516-Oct-18 22:09 
GeneralRe: Application service with C#. Pin
OriginalGriff16-Oct-18 22:13
mveOriginalGriff16-Oct-18 22:13 
GeneralRe: Application service with C#. Pin
Member 1401973516-Oct-18 22:46
Member 1401973516-Oct-18 22:46 
GeneralRe: Application service with C#. Pin
OriginalGriff16-Oct-18 23:02
mveOriginalGriff16-Oct-18 23:02 
GeneralRe: Application service with C#. Pin
Pete O'Hanlon16-Oct-18 23:59
mvePete O'Hanlon16-Oct-18 23:59 
AnswerRe: Application service with C#. Pin
#realJSOP22-Oct-18 9:03
professional#realJSOP22-Oct-18 9:03 
QuestionHow can I make my code modular? Pin
George Bradley16-Oct-18 12:43
George Bradley16-Oct-18 12:43 
AnswerRe: How can I make my code modular? Pin
V.16-Oct-18 18:44
professionalV.16-Oct-18 18:44 
GeneralRe: How can I make my code modular? Pin
henrydevid127-Oct-18 11:56
henrydevid127-Oct-18 11:56 
AnswerRe: How can I make my code modular? Pin
#realJSOP24-Oct-18 1:42
professional#realJSOP24-Oct-18 1:42 
AnswerRe: How can I make my code modular? Pin
josda100026-Oct-18 18:29
josda100026-Oct-18 18:29 
I'm not sure how far you got with breaking this down into a single algorithm, but here's what I got so far.

public class UIForm
{
    public class TimeSet
    {
        private TextBox _txtAllottedTime;
        private TextBox _txtStartTime;
        private TextBox _txtEndTime;

        public TimeSet(TextBox txtAllottedTime, TextBox txtStartTime, TextBox txtEndTime)
        {
            _txtAllottedTime = txtAllottedTime;
            _txtStartTime = txtStartTime;
            _txtEndTime = txtEndTime;
        }

        private string AllottedTime =>
            _txtAllottedTime.Text;
        private string StartTime =>
            _txtStartTime.Text;
        private string EndTime =>
            _txtEndTime.Text;

        public bool TextWasEnteredByUser =>
            string.IsNullOrEmpty(AllottedTime) ||
            string.IsNullOrEmpty(StartTime) ||
            string.IsNullOrEmpty(EndTime);
    }

    public List<TimeSet> TimeSets
    {
        new TimeSet(txtTimeLimit1, txtEntryTime1, txtExitTime1),
        new TimeSet(txtTimeLimit2, txtEntryTime2, txtExitTime2),
        new TimeSet(txtTimeLimit3, txtEntryTime3, txtExitTime3)
    };

    public void park1()
    {
        park(TimeSets[0]);
    }

    public void park2()
    {
        park(TimeSets[1]);
    }

    public void park3()
    {
        park(TimeSets[2]);
    }

    public void park(TimeSet timeSet)
    {
        if (!timeSet.TextWasEnteredByUser)
        {
            MessageBox.Show("Enter all time values");
        }
        else
        {
            TimeSpan alloted = TimeSpan.Parse(timeSet.AllottedTime);
            DateTime start = DateTime.Parse(timeSet.StartTime);
            DateTime end = DateTime.Parse(timeSet.EndTime);

            if (start > end)
                end = end.AddDays(1);

            TimeSpan duration = end.Subtract(start);

            //If the start time is greater than end that means the diff is above 12 hours
            //So subtracting the hours from a day to get the number of hours used if (TimeSpan.Compare(alloted, duration) == -1)
            if (TimeSpan.Compare(alloted, duration) == -1)
            {
                overTime1++;
            }

            completeTime1++;
            lblOverTime1.Text = "" + overTime1;
            int percentage = (overTime1 * 100) / completeTime1;
            lblOverTimePercentage1.Text = "" + percentage;

            if (percentage > 50)
            {
                warnWarden();
            }
        }
    }
}


I had to do some guessing, and as a forewarning, I obviously couldn't compile this code. However, what I am attempting to show you is that I created a subclass (one which should be in a separate file at this point), and this is handling one park# case at a time. I can initialize each TimeSet in a List<TimeSet>, and access a single instance of a TimeSet in a given park# call. This gives me the arguments I need. I then just call a single method, park, with all of the parameters I need in one object at the beginning.

Also, due to this cleanup, I can clean up that if statement to ask the object passed in one question, instead of calling string.IsNullOrEmpty() multiple times in one line. This makes the code a bit more readable.

You can continue on refactoring, because I do see there were a few other controls that you could add to the class, and frankly the rest of the else block could potentially be in this new class, cleaning up your UIForm code.

I would need a bit more context in order to be more thorough, but hopefully you see what I'm trying to do. Good luck.

GeneralRe: How can I make my code modular? Pin
josda100027-Oct-18 2:48
josda100027-Oct-18 2:48 
QuestionImagelist in Tabcontrol - Image selection Pin
RAFENS15-Oct-18 23:47
RAFENS15-Oct-18 23:47 
AnswerRe: Imagelist in Tabcontrol - Image selection Pin
BillWoodruff19-Oct-18 2:49
professionalBillWoodruff19-Oct-18 2:49 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.